• ActiveMQ可靠性机制


    消息的签收(Acknowledgment):

      客户端成功接收一条消息的标志是这条消息被签收。

      成功接收一条消息一般包括如下三个阶段: 

        (1) 客户端接收消息 

        (2) 客户端处理消息  

        (3) 消息被签收

        

      签收可以由ActiveMQ发起,也可以由客户端发起,取决于Session签收模式的设置。  

      在带事务的Session中,签收自动发生在事务提交时。如果事务回滚,所有已经接收的消息将会被再次传送。在不带事务的Session中,一条消息何时和如何被签收取决于Session的设置。

    非事务会话可做如下设置:

    1Session.AUTO_ACKNOWLEDGE(自动确认模式)

      当消息成功的从receive方法返回时,或者从MessageListener接口的onMessage方法成功返回时,会话自动确认客户端的消息接收。

    2Session.CLIENT_ACKNOWLEDGE(客户端确认模式)

      客户端通过调用消息的acknowledge方法签收消息。在这种模式中,签收是在会话层上进行:签收一个已消费的消息会自动地签收这个Session所有已消费消息的收条。

      例如,如果一个消息消费者消费了10个消息,然后确认第5个消息,那么所有10个消息都会被确认。 

    3. Session.DUPS_OK_ACKNOWLEDGE(延时/批量确认模式)

      这种确认方式允许JMS不必急于确认收到的消息,允许在收到多个消息之后一次完成确认,Auto_AcKnowledge相比,这种确认方式在某些情况下可能更有效,因为没有确认,当系统崩溃或者网络出现故障的时候,消息可以被重新传递

      这种方式会引起消息的重复,但是降低了Session的开销,所以只有客户端能容忍重复的消息,才可使用。(如果ActiveMQ再次传送同一消息,那么消息头中的JMSRedelivered将被设置为true)

  • 相关阅读:
    Caveat,bug,DDTS
    思科WLC如何实现WEB无感知认证?
    Cat9100 AP的注意事项!
    Docker基本操作命令
    基于Docker Toolbox部署PXC集群(三)Navicat连接Docker中的MySql实例
    MySql自带压力测试工具mysqlslab
    基于Docker Toolbox部署PXC集群(一)基本概念【转】
    基于Docker Toolbox部署PXC集群(二)PXC安装及节点配置
    使用Outlook EWS获取会议及会议室信息
    Tag镜像时默认为latest版本问题
  • 原文地址:https://www.cnblogs.com/chy2055/p/5178135.html
Copyright © 2020-2023  润新知