zoukankan      html  css  js  c++  java
  • 关于rabbitMq确认的那点事

    平时工作中经常用到queue,但只停于用而不知道原理。对于工作多年码农所忌讳的事。

    好。。这里就拿典型的rabbitMQ为研究对象(当然,工作中也一直使用着它)

    今天就来说说消息防丢失的事。

    首先rabbitMQ消息防丢失有两种手段。

    1、事务

    2、确认

    事务型就不多说了。。类似于DB的事务。。

    确认型要设置那些点呢?

    1、exchange(交换器)、queue(队列)、msg(消息)都必需设置为持久化

    2、consumer(消费方) 设置为手动确认。即autoAck设置为false。 然后开启一个监听ack(确认成功), nack(确认失败)的回调方法。根据自身业务进行再处理。

      那么这时rabbitMQ服务器而言,消息分为两类,

       第一类,等待投给consumer的消息

       第二类,已投给consumer,但还未收到消费者确认信号的消息。

    如果 RabbitMQ 一直没有收到消费者的确认信号,并且消费此消息的消费者己经断开连接,则 RabbitMQ会安排该消息重新进入队列,

    等待投递给下一个消费者,当然也有可 能还是原来的那个消费者。

    3、producter(生产方)开启确认模式(confirm)用来确认MSG是否正确到达rabbitMQ. 开启一个监听ack(确认成功), nack(确认失败)的回调方法。根据自身业务进行再处理。

  • 相关阅读:
    JAVA正则表达式判断元音
    JAVA正则表达式校验qq号码
    方法
    数组
    Java基础随笔3
    LDA背景资料
    scrapy系列(四)——CrawlSpider解析
    scrapy系列(三)——基础spider源码解析
    scrapy系列(二)——startproject、genspider创建项目与模板使用
    我眼中的机器学习(四) 快速寻找最优解
  • 原文地址:https://www.cnblogs.com/tywei/p/10897463.html
Copyright © 2011-2022 走看看