首先先开启消息确认
#开启消息二次确定,生产者到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,转载请注明。