0

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

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

谢谢

4

1 回答 1

1

我能够将消息发送到队列并使用 messagebean 将它们拉出。

我想您在谈论消息驱动的 bean ( MDB )?

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

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

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

于 2012-12-19T20:13:43.317 回答