首先先开启消息确认
#开启消息二次确定,生产者到broker的交换机 publisher-confirm-type: correlated
测试类
/** * 发送需要确定的订单 */ @Test public void test5() { template.setConfirmCallback(new RabbitTemplate.ConfirmCallback() { /** * * @param correlationData 配置 * @param ack 交换机是否收到消息,true是成功,false是失败 * @param cause 失败的原因 */ @Override public void confirm(CorrelationData correlationData, boolean ack, String cause) { System.out.println("confirm=====>"); System.out.println("confirm==== ack="+ack); System.out.println("confirm==== cause="+cause); if (ack){ System.out.println("发送成功!"); //更新数据库 消息状态为成功 TODO }else { System.out.println("发送失败,记录到日志,数据库!"); //更新数据库 消息状态为失败 TODO } } }); //数据库新增一个消息记录,状态是发送 //TODO //发送消息 template.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"order.new","新订单"); }
本文作者为DBC,转载请注明。