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(确认失败)的回调方法。根据自身业务进行再处理。

  • 相关阅读:
    PERL 学习
    javascript
    Netfilter
    PHP内核探索
    Linux内存管理学习笔记 转
    使用mysqladmin ext 了解MySQL运行状态 转
    在ArcGIS Desktop中进行三参数或七参数精确投影转换
    AE 栅格图分级渲染
    ArcEngine标注和注记
    ArcGIS Engine 线段绘制
  • 原文地址:https://www.cnblogs.com/tywei/p/10897463.html
Copyright © 2011-2022 走看看