diff --git a/packages/superflare/src/job.ts b/packages/superflare/src/job.ts index a8312ba..7792590 100644 --- a/packages/superflare/src/job.ts +++ b/packages/superflare/src/job.ts @@ -8,6 +8,9 @@ export abstract class Job { */ queue = "default"; + env: any; + ctx: any; + constructor() {} abstract handle(): Promise; diff --git a/packages/superflare/src/queue.ts b/packages/superflare/src/queue.ts index de2e15c..91008b9 100644 --- a/packages/superflare/src/queue.ts +++ b/packages/superflare/src/queue.ts @@ -28,16 +28,20 @@ export async function handleQueue( config({ env, ctx }); return await Promise.all( - batch.messages.map((message) => handleQueueMessage(message, ctx)) + batch.messages.map((message) => handleQueueMessage(message, ctx, env)) ); } -async function handleQueueMessage(message: Message, ctx: ExecutionContext) { +async function handleQueueMessage(message: Message, ctx: ExecutionContext, env: Env) { const instance = await hydrateInstanceFromQueuePayload( message.body as MessagePayload ); if (instance instanceof Job) { + // Set context and Env so its available to the job. + instance.ctx = ctx; + instance.env = env; + // invoke handler await instance.handle(); return; }