JMS队列:重新插入消息与回滚

时间:2018-07-12 08:22:32

标签: java jpa jms message-queue spring-jms

我有一个JMS使用者,该使用者针对第三方服务处理事务。

当有异常调用此第三方服务时,例如java.net.ConnectException。我希望队列中重新发送此消息。

可以采用两种明显的方式进行重新投放。

  1. 回滚事务上下文:队列重新发送该消息,但JPA事务被回滚(但是,我希望db保留事务记录以防止出现重复消息)。

  2. 以重新交付的时间重新发送来自使用者的消息:保留事务上下文(记录保存在db中)。

将消息从使用者重新发送到队列中是否存在性能问题,而不是不确认消息?

1 个答案:

答案 0 :(得分:1)

回滚更可靠。

您应该只为数据库更新启动一个新事务,而不是将其与JMS事务同步,因此即使JMS事务回滚,数据库事务也会提交。