JMS消息可靠机制

ActiveMQ消息签收机制:

客戶端成功接收一条消息的标志是一条消息被签收,成功应答。

消息的签收情形分两种:

1、带事务的session

如果session带有事务,并且事务成功提交,则消息被自动签收。如果事务回滚,则消息会被再次传送。

2、不带事务的session

不带事务的session的签收方式,取决于session的配置。

Activemq支持以下三种模式:

Session.AUTO_ACKNOWLEDGE  消息自动签收

Session.CLIENT_ACKNOWLEDGE  客戶端调用acknowledge方法手动签收

textMessage.acknowledge();//手动签收

Session.DUPS_OK_ACKNOWLEDGE 不是必须签收,消息可能会重复发送。在第二次重新传送消息的时候,消息

只有在被确认之后,才认为已经被成功地消费了。消息的成功消费通常包含三个阶段:客户接收消息、客户处理消息和消息被确认。 在事务性会话中,当一个事务被提交的时候,确认自动发生。在非事务性会话中,消息何时被确认取决于创建会话时的应答模式(acknowledgement mode)。

带事务的Session:
                生产者必须在生产完数据后手动提交session
                    Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
                    。。。。。。。。
                    session.commit();

      生产者不调用commit方法消息无法到达消息队列

消费者在消费完数据之后也必须手动提交Session
                    Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
                    。。。。。。。。
                    session.commit();
                    消费者不调用commit方法消息无法从消息队列销毁
不带事务的Session:
                1.自动签收(不靠谱)
                    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                
                2.手动签收
                    Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
                    消费者必须显示调用手动签收的方法进行签收,否则队列当中还是存在数据
                    message.acknowledge();

最新文章

  1. scenejs的一点Cameras小笔记
  2. CSS移动端多行显示多余省略号
  3. PHP多种形式发送邮件
  4. Github教程(1)
  5. Microsoft Dynamics 2013 --Social Pane
  6. PS常用
  7. 【Linux高频命令专题(5)】rmdir
  8. 软件测试 homework2
  9. STM32|4-20mA输出电路
  10. 【原创】大叔经验分享(48)oozie中通过shell执行impala
  11. Python中property的使用
  12. canvas 实现圆环效果
  13. python 回溯法 子集树模板 系列 —— 6、排课问题
  14. JPA映射持久化对象(Entity)
  15. CCFollow和ActionCallFunc
  16. 【linux】硬盘分区
  17. Socket通信简单实例(WCF调用Socket)
  18. C语言的第二天-比较大小的小程序
  19. mybatis简单示例
  20. c++基础学习之string

热门文章

  1. 中小企业自建云WAF有多难?只需20分钟!而且:全程免费!
  2. apache 访问日志access_log 配置和解析 rotatelogs分割日志
  3. [MacOS]Chrome 强制刷新
  4. vue路由--使用router.push进行路由跳转
  5. 【HDU - 2859 】Phalanx (dp 最大对称子图)
  6. MySQL中的幻读,你真的理解吗?
  7. codewars--js--ten minutes walk
  8. 二进制、十六进制理解及int类型二进制存储方式
  9. SparkShuffle机制
  10. 到2029年MRAM收入将增长170倍