【发布时间】:2012-11-21 09:15:20
【问题描述】:
JMS 队列中是否有可用的事务隔离级别,例如 JDBC ?
更具体地说,在过渡模式下,当客户端消费一条消息但尚未提交时,下一个客户端是否会消费下一条消息?如果第一个客户端回滚转换,即消息放置在队列中的位置,我认为它将被放置在之前的位置。
【问题讨论】:
标签: java jakarta-ee transactions jms
JMS 队列中是否有可用的事务隔离级别,例如 JDBC ?
更具体地说,在过渡模式下,当客户端消费一条消息但尚未提交时,下一个客户端是否会消费下一条消息?如果第一个客户端回滚转换,即消息放置在队列中的位置,我认为它将被放置在之前的位置。
【问题讨论】:
标签: java jakarta-ee transactions jms
简短回答:否。
JMS 发送要么是事务性的,要么不是事务性的,这意味着消息在发送者事务提交时或立即“提交”(对于代理和 MDB 可见)或立即(即使客户端稍后发送事务回滚)。
JMS 接收也有简单的开/关事务:当消息被 MDB 拾取(非事务性)或 MDB 无异常返回(事务性)时,消息被标记为已接收。
【讨论】:
事务隔离是关于数据库表更改的可见性。 JMS 消息是不可变的,您发送一次就无法更改。
【讨论】: