Kar*_*arl 10
您所描述的是XA事务.这允许事务跨越多个层,即JMS提供者,DB或任何其他EIS.大多数容器都可以配置为使用非XA和非XA事务,因此请检查容器设置!
例如,如果您将JMS与XA事务一起使用,则可以执行以下操作.
Start Transaction
|
DB Insert
|
Send JMS Msg
|
More DB Inserts
|
Commit Transaction <- Only at this point will the database records be inserted and the JMS message sent.
Run Code Online (Sandbox Code Playgroud)
XA Tranactions仅在完整的Java EE容器中可用,因此Tomcat中不提供XA事务.
祝好运!
卡尔
您可以一起使用JMS和JTA(Java Transaction API) - 请参阅此处.这样做时,JMS消息的发送或接收消息的消耗实际上是作为事务提交的一部分原子地发生的.
这是什么意思?如果事务失败或回滚,则"已发送"消息不会消失,并且不会真正消耗任何"已接收"消息.所有由JMS和JTA提供商为您处理.
您需要使用支持JTA的JMS实现.听起来你已经在使用交易了,所以可能需要做一些配置来实现它(大力挥手......).
我有使用它的经验(BEA WebLogic 7 w/BEA WebLogic Integration).按照宣传的方式工作 - "外部世界"没有看到我试过的JMS的影响,除非事务成功完成.
| 归档时间: |
|
| 查看次数: |
6994 次 |
| 最近记录: |