【问题标题】:How do I hold a jms message in queue until it is saved?如何在队列中保存 jms 消息直到它被保存?
【发布时间】:2012-12-20 04:13:43
【问题描述】:

我刚开始使用 Weblogic JMS。我能够将消息发送到队列并使用 messagebean 将它们拉出。现在我想将消息保存到数据库中。

所以我的问题是,我如何告诉 JMS 在我成功将消息写入数据库之前不要从队列中删除消息?

谢谢

【问题讨论】:

    标签: jms weblogic-10.x


    【解决方案1】:

    我能够将消息发送到队列并使用 消息豆。

    我猜你说的是消息驱动的 bean (MDB)?

    所以我的问题是,我如何告诉 JMS 不要从 队列,直到我成功将消息写入 数据库?

    MDB 是隐式容器管理事务的一部分,只要您的事务尚未提交(即,只要您的 onMessage 方法尚未结束),消息就不会被删除。

    在回滚的情况下(即您抛出异常或在MessageDrivenContext 上调用context.setRollbackOnly()),消息将被重新传递。您可以通过使事务 bean 管理或使用 @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 来避免这种行为,但在您的情况下不应该是这种情况。坚持使用默认配置,一切都会如你所愿。

    【讨论】:

      猜你喜欢
      • 2015-09-19
      • 2019-07-15
      • 2022-12-13
      • 2015-07-27
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多