【发布时间】:2013-06-25 03:25:21
【问题描述】:
我有一个关于 JMS 和 Spring 集成的问题。
我有 3 个队列,我们称它们为 QUEUE_SOURCE、QUEUE_TARGET 和 QUEUE_ERROR。 DefaultMessageListenerContainer 用于从 QUEUE_SOURCE 读取消息。
我已经为这些队列配置了一个 JMS 事务管理器。
当我从 QUEUE_SOURCE 读取,但将消息发布到 QUEUE_TARGET 时发生错误,我 可以看到消息重试了几次才抛出异常,触发回滚。
我猜会发生什么:
1) 开始交易 2) 阅读留言 3) 尝试在目标队列 QUEUE_TARGET 上发布消息,但失败 4)不要因为错误而提交,所以消息不会从QUEUE_SOURCE中删除
或
1) 开始交易 2) 阅读留言 3) 从 QUEUE_SOURCE 中删除消息 4) 尝试在目标队列 QUEUE_TARGET 上发布消息,但失败 5) 将消息放回 QUEUE_SOURCE
所有重新交付失败后,触发回滚。
但是,回滚期间发生的事情让我感到困惑。 我不知道消息在哪里结束,它肯定不会出现在源队列中,也不会出现在错误队列中。那么在回滚期间到底发生了什么?
【问题讨论】:
标签: spring-integration spring-jms