知识卡片
拒绝消息后的两种走向
内容
消费者收到消息后除了确认(ack),还可以显式拒绝:Basic.Reject只能拒绝单条消息,Basic.Nack可以借助multiple参数批量拒绝。两者都靠requeue参数决定消息的去向——requeue为true时消息被重新放回队列等待再次投递,为false时消息被直接移出队列(若配置了死信交换器,则会被转发过去)。发散:把”拒绝”和”重新入队”拆成两个独立开关,让”这条消息处理失败了”和”要不要再给别人一次机会”成为两个可以分别决策的问题,而不是绑定在一起的单一动作。
参考来源
《RabbitMQ实战指南》第3章《客户端开发向导》