有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个JMS消费者,它处理针对第三方服务的事务

当调用此第三方服务(例如java)时出现异常。网例外。我希望队列重新传递此消息

重新交付可以通过两种明显的方法完成

  1. 回滚事务上下文:队列重新传递消息,但JPA事务被回滚(不过,我希望db有一个事务记录,以防止出现重复消息(如果有的话))

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

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


共 (1) 个答案

  1. # 1 楼答案

    回滚更可靠

    您应该简单地为DB更新启动一个新事务,而不是将其与JMS事务同步,这样即使JMS事务回滚,DB事务也会提交