Spring ActiveMQ 整合: JMS 事务管理
来源:互联网 发布:livin on a prayer知乎 编辑:程序博客网 时间:2024/05/30 23:31
1.为什么要用事务?
为什么commit之后,不会有持久的消息重新传送呢?
原因在于commit操作会自动将为签收确认的消息进行签收确认,如果是当前接收但未签收确认的消息,都会被确认处理。因而在commit之后不会有持久化的消息出现。
2.activeMQ支持的事务:
ActiveMQ有支持两种事务,
- JMS transactions - the commit() / rollback() methods on a Session (which is like doing commit() / rollback() on a JDBC connection)
- XA Transactions - where the XASession acts as an XAResource by communicating with the Message Broker, rather like a JDBC Connection takes place in an XA transaction by communicating with the database.
在支持事务的session中,producer发送message时在message中带有transaction ID。broker收到message后判断是否有transaction ID,如果有就把message保存在transaction store中,等待commit或者rollback消息。所以ActiveMq的事务是针对broker而不是producer的,不管session是否commit,broker都会收到message。
如果producer发送模式选择了persistent,那么message过期后会进入死亡队列。在message进入死亡队列之前,ActiveMQ会删除message中的transaction ID,这样过期的message就不在事务中了,不会保存在transaction store中,会直接进入死亡队列。具体删除transaction ID的地方是在:org.apache.activemq.util.BrokerSupport的doResend,将transaction ID保存在了originalTransactionID中,删除了transaction ID。
在下面的介绍中我用的是JMS transactions.
JMS transactions事务的配置:
①建立JMS事务,并引入关联链接事务。
②.设置一个jmsTamplat,并关联监听容器。
待我详细了解JtaTransactionManager 后,再说吧。
- Spring ActiveMQ 整合: JMS 事务管理
- Spring ActiveMQ 整合(四): JMS 事务管理
- spring activeMQ 整合(四): JMS 事务管理
- SPRING JMS 整合ACTIVEMQ
- Spring整合JMS(四)-事务管理
- spring整合activeMq 调试JMS
- spring整合activeMq 调试JMS
- JMS-ActiveMq与Spring整合
- Spring学习笔记 - Spring 整合 JMS - ActiveMQ
- Spring整合Jms学习(四)_事务管理
- Spring整合JMS——事务管理
- Spring JMS 整合Tomcat和ActiveMQ
- spring整合JMS - 基于ActiveMQ实现
- spring整合JMS - 基于ActiveMQ实现
- spring整合JMS - 基于ActiveMQ实现
- Spring与ActiveMQ(JMS)的整合说明
- Spring JMS 整合Tomcat和ActiveMQ
- Spring整合JMS(一)-基于ActiveMQ实现
- MYSQL数据库四种索引类型的简单使用
- 浏览器的渲染机制
- Mac配置dubbo-admin并启动
- 2018校招顺丰测评
- jn-场馆详情地图标注居中
- Spring ActiveMQ 整合: JMS 事务管理
- JAVA设计模式之单例模式
- java集合介绍
- javascript操作cookie的三个基础方法
- java中静态代码块的用法 static用法
- 进程详述
- CVTE前端面试
- 2018校招唯品会软件测试岗在线笔试
- DP——51nod1486 大大走格子