java - 如果 JMS 事务既未提交也未回滚,消息会发生什么情况

标签 java jms

请帮助我,我是 JMS 的新手。如果 JMS 事务既未提交也未回滚,消息会发生什么情况?

最佳答案

确切的行为取决于代理。我专注于 WebSphere MQ,所以我将用这些术语来解释它。如果您让我们知道您使用的是哪种类型的经纪人,也许精通该特定经纪人的人会做出回应。

对于 WMQ,限制因素是事务日志和应用程序的生命周期。如果应用程序因未完成的事务而终止,则会回滚。除此之外,事务一直存在于日志中,直到日志空间耗尽,此时事务被回滚并且应用程序获得一个原因代码来指示错误的性质。如果没有其他应用程序写入事务日志,事务可以无限期地存在。如果 QMgr 很忙,未提交的事务可能只持续几秒钟,具体取决于日志范围和大小。

WMQ 没有内存泄漏类型的影响。有一些可调项,例如未提交消息数量的上限,可以防止内存、句柄和其他资源增长失控。

关于java - 如果 JMS 事务既未提交也未回滚,消息会发生什么情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4464925/

相关文章:

java - h2 getGenerateKeys 抛出异常

java - 用于组广播的 JMS 架构

JMS/MDB 回滚

java - Spring Data JPA JpaRepository.save(entity) 不返回数据库默认值

java - Android 通知未启动 Activity

jms - Apache Camel 和 Stomp

java - Camel 组件定义: What is the difference between componentProperties and properties?

jms - 通过 Internet 向 ActiveMQ 发送消息

java - 从 jar 文件启动时 Selenium 服务器没有响应

java - 当它可能为空时如何从 Hibernate 返回一个唯一的结果?