面试事务rabbitmq

RabbitMQ的confirm消息确认机制和return消息机

2018-08-14  本文已影响392人  HmilyMing

代码地址:    https://github.com/hmilyos/rabbitmq-api-demo

1.confirm消息确认机制

消息的确认是指生产者投递消息后,如果Broker接收到消息,则会给生产者一个应答。生产者进行接收应答,用来确认这条消息是否正常的发送到Broker,这种方式也是消息可靠性投递的核心保障。其流程图如下所示

confirm消息确认机制流程图

实现confirm确认消息

第一步:在channel上开启确认模式:channel.confirmSelect()

第二步:在channel上添加监听:addConfirmListener,监听成功和失败的返回结果,根据具体的结果对消息进行重新发送、或记录日志等后续处理!

代码实现:

生产端代码

消费端代码无需什么修改

消费端代码

启动消费端

再启动生产端,注意看日志打印,收到了confirm

自此,confirm机制的用法接受完毕。

2.return消息机制

return Listener用于处理一些不可路由的消息!

生产者通过指定一个exchange 和 routingkey  把消息送达到某个队列中去,然后消费者监听队列,进行消费处理。但是在某些情况下,如果我们在发送消息时,当前的exchange 不存在或者指定的routingkey路由不到,这个时候如果要监听这种不可达的消息,就要使用 return Listener。流程图如下所示

实现return消息机制

在基础API中有一个关键的配置项 Mandatory:如果为true,则监听器会接收到路由不可达的消息,然后进行后续处理,如果为false,则broker端自动删除该消息。

代码实现

生产端代码(一) 生产端代码(二)

消费端代码和以前的一样,无需修改什么

消费端

先启动消费端,然后上rabbitMQ的管控台查看对应的exchange和queue是否创建,绑定成功。

再启动生产端,注意看打印的日志

监听器会接收到路由不可达的消息,然后进行后续处理,前提是消费端的Mandatory为true,可以修改为false,再试试看能不能接收到,我这里就不演示了。

上一篇 下一篇

猜你喜欢

热点阅读