【发布时间】:2017-04-29 21:21:35
【问题描述】:
我当前的用例在我的监听器中:
- 从队列中消费一个事件(我们称之为原始事件),该事件包括重播事件列表(我们称之为子事件)。
- 将这些重播事件(子事件)批量生成到其他队列。
- 更新 Cassandra。
我可以根据 Gary 提到的内容生成所有重播事件,如果在生成过程中发生任何异常,我可以回滚所有重播事件。
使用带有 ProducerCallback 的执行方法之一...
SessionCallback and ProducerCallback
然后,在您的 ProducerCallback.doInJms() 方法中...
使用生产者发送多条消息。当回调退出时, 事务将被提交。
但是,如果在步骤 3 中发生任何异常,我们只能回滚 原始事件,而不能回滚那些 重播事件,因为在步骤 2 中我们已经提交了这些重播回调退出后的事件,并且那些重播事件已经在另一个队列中并且不能回滚。
如果第 3 步出现异常,是否有人对我们如何回滚所有内容有更好的想法?
【问题讨论】:
标签: java jms spring-jms