Why Trigger.dev?
Trigger.dev runs background jobs in TypeScript with automatic retries, scheduling, and monitoring. No Redis, no Bull, no separate worker processes.
npx trigger.dev@latest init
Define a Job
import { task } from '@trigger.dev/sdk/v3'
export const processOrder = task({
id: 'process-order',
retry: { maxAttempts: 3 },
run: async (payload: { orderId: string }) => {
const order = await db.getOrder(payload.orderId)
await chargePayment(order)
await sendConfirmationEmail(order)
await updateInventory(order)
return { success: true }
},
})
Trigger from Your App
import { processOrder } from './trigger/process-order'
// From API route
app.post('/checkout', async (req, res) => {
const order = await createOrder(req.body)
await processOrder.trigger({ orderId: order.id })
res.json({ status: 'processing' })
})
Scheduled Jobs (Cron)
import { schedules } from '@trigger.dev/sdk/v3'
export const dailyReport = schedules.task({
id: 'daily-report',
cron: '0 9 * * *', // 9 AM daily
run: async () => {
const stats = await generateDailyStats()
await sendSlackMessage(stats)
},
})
Trigger.dev vs Bull/BullMQ
| Feature | Trigger.dev | BullMQ |
|---|---|---|
| Redis | Not needed | Required |
| Monitoring | Built-in UI | Separate |
| Scheduling | Built-in | Built-in |
| TypeScript | Native | Via adapter |
| Deploy | Managed | Self-host |
Need to extract data from any website at scale? I build custom web scrapers — 77 production scrapers running on Apify Store. Email me at spinov001@gmail.com for a tailored solution.
Top comments (0)