JmsTemplate 批处理问题

JmsTemplate batch issue

我当前的用例是在我的监听器中它将:

  1. 从队列中消费一个事件(我们称它为原始事件),该事件包括重放事件列表(我们称它为子事件).
  2. 将那些重播事件(子事件)批量生成到其他队列。
  3. 更新 Cassandra。

我可以根据Gary提到的内容制作所有重放事件,如果在制作过程中出现任何异常,我可以回滚所有重放事件。

Use one of the execute methods with a ProducerCallback...

SessionCallback and ProducerCallback

Then, in your ProducerCallback.doInJms() method...

Use the producer to send multiple messages. When the callback exits, the transaction will be committed.

但是,如果在第 3 步中发生任何异常,我们只能回滚 原始事件,而不能回滚那些 重播事件,因为在第 2 步中,我们已经在回调退出后提交了那些重播事件,并且那些重播事件已经在另一个队列中并且无法回滚。

如果第 3 步出现异常,是否有人对我们如何回滚所有内容有更好的想法?

您必须在同一个会话中完成所有操作;消费,生产......,卡桑德拉。

都在里面doInJms()...

  • session.createConsumer()

尝试{

  • consumer.receive()
  • 生产者发送() ...
  • 卡桑德拉更新

终于{

  • consumer.close()

}