【发布时间】:2012-12-20 04:13:43
【问题描述】:
我刚开始使用 Weblogic JMS。我能够将消息发送到队列并使用 messagebean 将它们拉出。现在我想将消息保存到数据库中。
所以我的问题是,我如何告诉 JMS 在我成功将消息写入数据库之前不要从队列中删除消息?
谢谢
【问题讨论】:
标签: jms weblogic-10.x
我刚开始使用 Weblogic JMS。我能够将消息发送到队列并使用 messagebean 将它们拉出。现在我想将消息保存到数据库中。
所以我的问题是,我如何告诉 JMS 在我成功将消息写入数据库之前不要从队列中删除消息?
谢谢
【问题讨论】:
标签: jms weblogic-10.x
我能够将消息发送到队列并使用 消息豆。
我猜你说的是消息驱动的 bean (MDB)?
所以我的问题是,我如何告诉 JMS 不要从 队列,直到我成功将消息写入 数据库?
MDB 是隐式容器管理事务的一部分,只要您的事务尚未提交(即,只要您的 onMessage 方法尚未结束),消息就不会被删除。
在回滚的情况下(即您抛出异常或在MessageDrivenContext 上调用context.setRollbackOnly()),消息将被重新传递。您可以通过使事务 bean 管理或使用 @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 来避免这种行为,但在您的情况下不应该是这种情况。坚持使用默认配置,一切都会如你所愿。
【讨论】: