Info :: 我有一个带有 XA 事务的 DefaultMessageListener 实现。我使用了 MessageListener 实现。
场景::我的 XA 事务位于 DB 和 JMS Q Publish 之间。如果其中任何一个出现“数据错误”,我需要将源消息“移动”到不同的 Q 并继续处理其余消息。
问题:: 现在,如果我的 DB 事务因 DataIntegrity 错误(主键违规)而失败,那么 XA 事务将在 Container 处回滚(而不是在 MessageListener 实现中)。因此,原始消息回滚到 Q,消息侦听器无限期地被此消息卡住 - 接收和失败处理。
如何检查某些异常 - 并在容器中以不同方式处理它们,以便我可以继续处理其余消息。
银丝