RabbitMQ回调函数没有起到作用

来源:3-4 RabbitMQ整合SpringBoot2-消息可靠性投递-实现方案落地代码详解-3

371425

2019-12-25 23:16

final ConfirmCallback callback=new RabbitTemplate.ConfirmCallback() {

public void confirm(CorrelationData correlationData, boolean ack, String cause) {

System.out.println("correlationData:"+correlationData);

//发送消息是的唯一消息ID

String massageId=correlationData.getId();

System.out.println("消息massageId 处理。。。。。。。"+massageId);

if(ack) {

//如果confirm返回成功,则进行更新

OrderMassageLog massageLog=new OrderMassageLog();

massageLog.setOrderMassageId(massageId);

massageLog.setStatus(Const.ORDER_SEND_SUCCESS);

LogMapper.updateByPrimaryKeySelective(massageLog);

}else {

System.out.println("消息异常处理。。。。。。。");

}

}

};

public void SendOrderInfo(OrderMaster order) {

//设置监听对象

rabbit.setConfirmCallback(callback);

//设置唯一的对象消息id

CorrelationData date=new CorrelationData(order.getOrderMassageId());

rabbit.convertAndSend("order-exchenge","order.key",order,date);//发送消息

}

这个callback回调函数  发送消息后 没有打印对应的correlationData   没有运行到这个callback这个函数内  数据发送和数据接收 都没有问题

数据库的订单表被插入数据  log表也插入数据  就是log表的状态 应该从0 变为 1  消息发送成功  但是没有改变  一直是0 没有改变  程序也灭有报错 运行正常  就是callback函数  没有运行到

写回答 关注

1回答

  • herow
    2021-12-10 10:42:17

    配置添加发布返回确认

    spring.rabbitmq.publisher-returns: 是否启用【发布返回】,默认false


RabbitMQ消息中间件极速入门与实战

入门RabbitMQ,并整合SpringBoot2.x,实现100%消息的可靠性投递!

42102 学习 · 143 问题

查看课程

相似问题