Architecture Intermediate
Message Queue Patterns¶
Message QueueRabbitMQAsync 3 min read
Design patterns for message queues. Work queues, dead letter queues and examples with RabbitMQ.
Work Queue¶
// Producer
ch.assertQueue('email-queue', { durable: true });
ch.sendToQueue('email-queue', Buffer.from(JSON.stringify({
to: '[email protected]', subject: 'Potvrzení'
})), { persistent: true });
// Consumer
ch.prefetch(1);
ch.consume('email-queue', async (msg) => {
await sendEmail(JSON.parse(msg.content.toString()));
ch.ack(msg);
});
Dead Letter Queue¶
Messages after N failed attempts are moved to the DLQ for analysis.
ch.assertQueue('orders', {
durable: true,
arguments: {
'x-dead-letter-exchange': 'dlx',
'x-dead-letter-routing-key': 'dead-orders'
}
});
Summary¶
Work queues for background jobs, pub/sub for events, DLQ for error handling. RabbitMQ for routing, Kafka for streaming.
Need Help with Implementation?¶
Our team has experience designing and implementing modern architectures. We’re happy to help.