RabbitMQ消息确认(一)——生产者推送消息
个人博客
生产者推送消息确认机制有2种,分别是:
- 确认消息已发送到交换机(Exchange)
- 确认消息已发送到队列(Queue)
1、配置文件
1 | server: |
2、RabbitTemplate配置
1 |
|
在配置中重新定义了RabbitTemplate
,分3种情况测试:
- 消息推送到
server
,但是在server
里找不到交换机。 - 消息推送到
server
,找到交换机了,但是没找到队列。 - 消息推送成功。
结果:
只回调
ConfirmCallback
函数。1
2
3ConfirmCallback: 相关数据:null
ConfirmCallback: 确认情况:false
ConfirmCallback: 原因:channel error; protocol method:回调
ConfirmCallback
和ReturnCallback
函数。1
2
3
4
5
6
7
8
9ReturnCallback: 消息:(Body:'{createTime=2020-09-14 22:48:22, messageId=02007bf3-3eb6-4e53-a539-45c28f012c46, messageData=RabbitMQ}' MessageProperties [headers={}, contentType=application/x-java-serialized-object, contentLength=0, receivedDeliveryMode=PERSISTENT, priority=0, deliveryTag=0])
ReturnCallback: 回应码:312
ReturnCallback: 回应信息:NO_ROUTE
ReturnCallback: 交换机:directExchange
ReturnCallback: 路由键:directRouting2
--
ConfirmCallback: 相关数据:null
ConfirmCallback: 确认情况:true
ConfirmCallback: 原因:null只回调
ConfirmCallback
函数。1
2
3ConfirmCallback: 相关数据:null
ConfirmCallback: 确认情况:true
ConfirmCallback: 原因:null
每种情况都会回调ConfirmCallback
函数;只有找不到队列时才会回调ReturnCallback
函数。
参考链接
代码地址
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 赵晓斌技术博客!
评论