springBoot使用RabitMq使用发布确认和消费确认

消息发送确认

发送的消息怎么样才算失败或成功?如何确认?

当消息无法路由到队列时,确认消息路由失败。消息成功路由时,当需要发送的队列都发送成功后,进行确认消息,对于持久化队列意味着写入磁盘,对于镜像队列意味着所有镜像接收成功

使用springBoot,需要在application.properties配置文件中配置:


ConfirmCallback

消息发送到 Broker 后触发回调,确认消息是否到达 Broker 服务器,通过实现 ConfirmCallback 接口,复写confirm()方法,实现自己的处理逻辑,

注意:失败的回调,并不会传回,失败的消息,仅仅只是一个表示,告诉你成功与否,可以在send消息的时候,传入CorrelationData参数(),这样回调ConfirmCallback的时候,就可以拿到message()

如果需要对失败的消息做额外的重发处理,需要做额外的操作,如:使用redis,把发送的消息,存在redis中,返回ack,则删除redis的消息,定时获取redis中的消息,做重发处理

代码如下:

ReturnCallback

通过实现 ReturnCallback 接口,启动消息失败返回(成功无返回):


在初始化RabbitAdmin或者RabbitTemplate的时候,设置回调:


发送消息:



只有设置了Mandatory,才会在失败的时候调用ReturnCallback(方法)

消费确认

首先需要在application.properties配置去下,开启手动确认模式:


具体消费代码如下:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • “ 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列...
    落羽成霜丶阅读 9,650评论 1 41
  • 消息队列设计精要 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终...
    meng_philip123阅读 5,399评论 1 25
  • 感情如饮水 有期望就会有失望 认真来看,男的确有渣之处。不给你幻想的空间,承诺的言语,但却要吊着你,要感受到你对其...
    圆柱体阅读 1,679评论 0 0
  • 感恩大恩上师及诸佛菩萨护佑我加持我,感恩上师慈悲开示使我以正法纠正自己的言行意,谢谢,谢谢,谢谢! 感恩爸妈公婆对...
    晓筱竹阅读 1,004评论 0 0
  • 梦里把车和办公室的同事把车停在一起。12不让刘建熊干了。
    知行合一致良知心性阅读 1,000评论 0 0

友情链接更多精彩内容