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

2018-05-30  本文已影响0人  你猜_bug开发

消息发送确认

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

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

使用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配置去下,开启手动确认模式:

具体消费代码如下:

上一篇下一篇

猜你喜欢

热点阅读