美文网首页面试事务rabbitmq
RabbitMQ的confirm消息确认机制和return消息机

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

作者: HmilyMing | 来源:发表于2018-08-14 07:01 被阅读392次

    代码地址:    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,再试试看能不能接收到,我这里就不演示了。

    相关文章

      网友评论

        本文标题:RabbitMQ的confirm消息确认机制和return消息机

        本文链接:https://www.haomeiwen.com/subject/zuyjbftx.html