event-driven-patterns

Solid

Message queue patterns with BullMQ, Kafka, RabbitMQ - saga, outbox, dead letter queue, exactly-once semantics.

AI & Automation 501 stars 42 forks Updated yesterday MIT

Install

View on GitHub

Quality Score: 91/100

Stars 20%
90
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# Event-Driven Patterns Message queue and event bus patterns for decoupled, reliable async processing. ## BullMQ Setup (Producer + Consumer) ```typescript import { Queue, Worker, QueueEvents } from 'bullmq' import Redis from 'ioredis' const connection = new Redis(process.env.REDIS_URL!, { maxRetriesPerRequest: null }) // Producer: define queue const emailQueue = new Queue('email', { connection }) const marketQueue = new Queue('market-resolution', { connection }) // Add job with options await emailQueue.add( 'send-welcome', { userId: 'abc', email: 'user@example.com' }, { attempts: 3, backoff: { type: 'exponential', delay: 1000 }, removeOnComplete: { count: 1000 }, removeOnFail: { count: 5000 } } ) // Delayed job (send after 1 hour) await emailQueue.add('send-reminder', { userId: 'abc' }, { delay: 3_600_000 }) // Consumer: named processor const emailWorker = new Worker( 'email', async (job) => { if (job.name === 'send-welcome') { await sendWelcomeEmail(job.data.email) } else if (job.name === 'send-reminder') { await sendReminderEmail(job.data.userId) } // Return value stored in job.returnvalue return { sent: true, at: new Date().toISOString() } }, { connection, concurrency: 10 } ) emailWorker.on('completed', (job, result) => { console.log(`Job ${job.id} completed:`, result) }) emailWorker.on('failed', (job, err) => { console.error(`Job ${job?.id} failed after ${job?.attemptsMade} attempts:`,...

Details

Author
vibeeval
Repository
vibeeval/vibecosystem
Created
2 months ago
Last Updated
yesterday
Language
C#
License
MIT

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category