zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    C#关键字
    委托
    async和await异步编程
    IOC、DI,IoC容器
    数据库脏读、幻读
    关于vue 从零开始的搭建注意事项
    C#.NET WebApi返回各种类型(图片/json数据/字符串)
    win7下IIS配置以及域名映射方法
    18/11月 日常总结
    Js 数组去重的几种方法总结
  • 原文地址:https://www.cnblogs.com/chy2055/p/5178135.html
Copyright © 2011-2022 走看看