消息队列面试题, RabbitMQ 中消息什么时候会进入死信交换机?
消息队列面试题, RabbitMQ 中消息什么时候会进入死信交换机?
QA
Step 1
Q:: 什么是消息队列?
A:: 消息队列是一种通信机制,允许应用程序通过读写队列中的消息来相互通信和处理任务。消息队列提供异步处理的能力,帮助应用程序实现解耦、提高系统的可靠性和可扩展性。
Step 2
Q:: RabbitMQ 中消息什么时候会进入死信交换机?
A:: 在 RabbitMQ 中,消息会在以下几种情况下进入死信交换机(DLX):1) 消息被消费者拒绝(使用 basic.reject 或 basic.nack)且 requeue 参数被设置为 false;2) 消息的 TTL(Time-To-Live)过期;3)
消息在队列中的最大长度被超出。
Step 3
Q:: 如何配置 RabbitMQ 的死信交换机?
A:: 要配置 RabbitMQ 的死信交换机,首先需要在队列中设置三个参数:1) x-dead-letter-exchange:指定死信交换机的名称;2) x-dead-letter-routing-key:指定死信的路由键(可选);3) x-message-
ttl:消息在队列中的存活时间(可选)。
Step 4
Q:: RabbitMQ 中的消息如何被重新处理?
A:: 消息可以通过多种方式被重新处理:1) 使用 basic.reject 或 basic.nack 并将 requeue 参数设置为 true;2)
消息进入死信交换机后,可以通过合适的绑定将其路由到特定的队列进行重新处理。
Step 5
Q:: 什么是消息队列的消费者确认机制?
A:: 消费者确认机制用于确保消息被成功处理。RabbitMQ 提供了两种确认机制:1) 自动确认(auto-ack):消息一旦被发送给消费者即被认为已处理;2) 手动确认(manual-ack):消费者明确地通知 RabbitMQ 消息已被处理(使用 basic.ack、basic.nack 或 basic.
reject)。