RabbitMQ消息确认机制 介绍分布式消息服务RabbitMQ消息确认机制。 消息确认 RabbitMQ消息确认机制分为发送消息确认和消息接收确认。 发送消息确认 生产者确认,即为生产者发送消息后,等待服务端确认。 以下示例演示在Java客户端配置生产者确认过程: try { channel.confirmSelect(); channel . basicPublish( "testexchange" , " routingKey" , null , "publisher confirm message".getBytes()); if (!channel.waitForConfirms()) { System.out.println( "send message failed") ; // do something else }else{ // do something } } catch (InterruptedException e) { e.printStackTrace() ; } 消息接收确认(ACK) 消费者收到消息后需要对 RabbitMQ Server 进行消息ACK确认,RabbitMQ根据确认信息决定是删除队列中的该信息还是重新发送。 重点在于消费者的下面两个方法 channel.basicAck 消费者签收 channel.basicNAck 消费者拒绝签收 以下示例演示在Java客户端配置生产者确认过程: QueueingConsumer consumer new QueueingConsumer(channel); channel.basicConsume(ConfirmConfig.queueName, false, consumer); QueueingConsumer.Delivery delivery consumer.nextDelivery(); String msg new String(delivery.getBody()); // do something with msg. channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);