Message Queues and Event-Driven Architecture Flashcards
(10 cards)
What is a message queue, and why is it used?
A message queue stores and processes messages asynchronously. Example: RabbitMQ queues tasks like email sending, decoupling services for scalability.
What is event-driven architecture?
Event-driven architecture triggers actions based on events. Example: A user signup event in Kafka triggers a welcome email and analytics update.
How does RabbitMQ work in a backend?
RabbitMQ routes messages from producers to consumers via queues. Example: A Node.js app publishes a ‘user.created’ message, consumed by an email service.
How do you publish a message to RabbitMQ in Node.js?
```javascript
const amqp = require(‘amqplib’);
async function publish() {
const conn = await amqp.connect(‘amqp://localhost’);
const channel = await conn.createChannel();
await channel.assertQueue(‘tasks’);
channel.sendToQueue(‘tasks’, Buffer.from(‘Task 1’));
}
// Explanation: Sends a task to a queue for processing.
~~~
What is the difference between Kafka and RabbitMQ?
Kafka is a distributed log for high-throughput streaming; RabbitMQ is a traditional queue for task processing. Kafka suits analytics, RabbitMQ suits task queues.
How do you consume messages from a RabbitMQ queue?
```javascript
const amqp = require(‘amqplib’);
async function consume() {
const conn = await amqp.connect(‘amqp://localhost’);
const channel = await conn.createChannel();
await channel.assertQueue(‘tasks’);
channel.consume(‘tasks’, msg => console.log(msg.content.toString()));
}
// Explanation: Listens for tasks, processes messages.
~~~
What is a dead letter queue, and why is it used?
A dead letter queue stores messages that fail processing for later analysis. Example: In RabbitMQ, redirect failed tasks to a DLQ for debugging.
How do you ensure message reliability in a queue?
Use acknowledgments and persistent messages. Example: In RabbitMQ, set deliveryMode: 2
to persist messages, use channel.ack(msg)
to confirm processing.
What is a publisher-subscriber pattern in event-driven systems?
Publishers send events to topics; subscribers receive relevant events. Example: Kafka topic ‘orders.created’ notifies payment and shipping services.
How do you scale a message queue system?
Partition queues/topics (e.g., Kafka partitions) and add consumers. Example: Scale Kafka by adding partitions and consumer groups for parallel processing.