【问题标题】:JMS transacted session: Commit / rollback for specific messageJMS 事务会话:特定消息的提交/回滚
【发布时间】:2016-10-28 08:37:16
【问题描述】:

我使用 1 个会话、1 个异步 MessageListener 来接收消息并在线程中处理每条消息。线程完成后,将使用会话提交或回滚来决定是否可以重新传递消息。但我真的担心提交/回滚语句可能会对线程中处理的那些消息产生任何影响。例如

1 session
1 msg listener

---TIME---->
[MSG1: receive] --------------- processing -----------------> [MSG1: rollback]
               [MSG2: receive] --------------> [MSG2: commit]


- At the time MSG2 commit, may be MSG1 also be committed?
If it is right, can I execute commit/rollback for specific MSG only?

【问题讨论】:

    标签: session jms commit rollback


    【解决方案1】:

    您尚未共享任何代码,但我会尽力回答。

    首先,这似乎不是一个好策略,

    会话提交或回滚将用于决定消息是否可以 是否重新交付

    我认为,您应该使用消息确认模式来决定是否重新发送。根据需要在消息中设置适当的确认模式。

    其次,您似乎将线程的存在与 JMS Session 混合在一起已处理。要commitrollback 单个 JMS 消息,您的会话需要为单个 JMS 消息进行事务处理。

    Transacted Session

    所以我猜,您的一条消息的commitrollback 是否影响其他消息不取决于您的线程,而是您如何定义事务以及有多少消息构成事务(即事务的范围)。

    它是 Session commitrollback 不是 Message commitrollback

    希望对你有帮助!!

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 1970-01-01
      • 2021-03-07
      • 1970-01-01
      • 2011-01-25
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      相关资源
      最近更新 更多