@rudderjs/queue-inngest
v1.0.1
Published
Inngest serverless queue adapter for `@rudderjs/queue`.
Readme
@rudderjs/queue-inngest
Inngest serverless queue adapter for @rudderjs/queue.
pnpm add @rudderjs/queue-inngest inngestSetup
// config/queue.ts
import { Env } from '@rudderjs/support'
import { SendWelcomeEmailJob } from '../app/Jobs/SendWelcomeEmailJob.js'
export default {
default: 'inngest',
connections: {
inngest: {
driver: 'inngest',
appId: Env.get('INNGEST_APP_ID', 'my-rudderjs-app'),
signingKey: Env.get('INNGEST_SIGNING_KEY'),
eventKey: Env.get('INNGEST_EVENT_KEY'),
jobs: [SendWelcomeEmailJob],
},
},
}// bootstrap/providers.ts
import { queue } from '@rudderjs/queue'
import configs from '../config/index.js'
export default [queue(configs.queue)]The queue provider automatically mounts the Inngest serve handler at /api/inngest.
Defining a Job
import { Job } from '@rudderjs/queue'
export class SendWelcomeEmailJob extends Job {
static retries = 3
constructor(
private readonly email: string,
private readonly name: string,
) {
super()
}
async handle(): Promise<void> {
// send the email
}
}await SendWelcomeEmailJob.dispatch('[email protected]', 'Alice').send()InngestConfig
| Option | Type | Default | Description |
|---|---|---|---|
| appId | string | 'rudderjs-app' | Unique app identifier shown in the Inngest dashboard |
| eventKey | string | — | Inngest event key (required in production) |
| signingKey | string | — | Inngest signing key (required in production) |
| jobs | Job[] | [] | Job classes to register as Inngest functions |
Event Naming
RudderJS maps job class names to Inngest event names:
rudderjs/job.<ClassName>SendWelcomeEmailJob → rudderjs/job.SendWelcomeEmailJob
Notes
- All job classes that handle events must be listed in the
jobsarray. - The
/api/inngestroute must be publicly reachable for Inngest to deliver events. - In development, run the Inngest Dev Server:
npx inngest-cli@latest dev - In production, set
INNGEST_SIGNING_KEYandINNGEST_EVENT_KEYenvironment variables. - Inngest handles retries, concurrency, and observability automatically via the dashboard.
