spring activeMQ 整合(四): JMS 事务管理
来源:互联网 发布:java web mvc四层架构 编辑:程序博客网 时间:2024/05/14 21:29
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(四)-事务管理
- Spring整合JMS(四)——事务管理
- Spring整合JMS(四)——事务管理
- Spring整合JMS(四)——事务管理
- Spring整合JMS(四)——事务管理
- Spring整合JMS(四)——事务管理
- Spring整合JMS(四)——事务管理
- Spring整合JMS(四)——事务管理
- Spring整合JMS(四)——事务管理
- Spring整合JMS(四)——事务管理
- Spring整合JMS(四)——事务管理 博客分类:
- Spring整合JMS(四)——事务管理
- Spring整合JMS(四)——事务管理
- Spring整合JMS(四)——事务管理
- Spring整合JMS(四)——事务管理
- getElementById+比较运算符
- ubuntu下防火墙配置(转)
- NBUOJ 2383 泰拳之王(计数)
- VS(SQL Server一样)设置护眼背景色
- linux系统中如何进入退出vim编辑器,方法及区别
- spring activeMQ 整合(四): JMS 事务管理
- CommandBuffer.Blit BuiltinRenderTextureType.CameraTarget为空的问题
- Integer比较是否相等问题
- GraphQL相关
- java基础5
- cocos2d-x读取cocosStudio控件(C++)
- unicode编码
- sizeof详解
- java对properties集合的使用