Worker queue setup if your app has multiple queues #11

Closed arsdehnel.com
Closed opened by arsdehnel.com

Should note this in the docs for this package but not going to ship it this way right now.

import { prefix, render, route } from 'rwsdk/router';
import { defineApp } from 'rwsdk/worker';
import apiRoutes from '@/api/_routes';
import DefaultDocument from '@/documents/default';
import headersMiddleware from '@/middleware/headers';
import loggerMiddleware from '@/middleware/logger';
import sessionMiddleware from '@/middleware/session';
import Pages__root from '@/pages/home';
import tapRegistrations from './tap/registrations';

export { BrowserSessionDurableObject } from 'rwsdk-atp/browser-sessions';
export { OAuthTokenDurableObject } from 'rwsdk-atp/oauth';

const app = defineApp([
	headersMiddleware,
	loggerMiddleware,
	sessionMiddleware,
	prefix('/api', apiRoutes),
	render(DefaultDocument, [route('/', Pages__root)]),
]);

export default {
	fetch: app.fetch,
	async queue(batch: MessageBatch<unknown>): Promise<void> {
		if (batch.queue === 'queue-tap-webhook-local') {
			await tapRegistrations.workerQueueHelper(batch);
		}
	},
} satisfies ExportedHandler<Env>;

Leaving this open so I make sure to document using this for a worker with a single queue and multiple queues but the same workerQueueHelper works for both situations.

Sign up or Sign in to add to the discussion.