我刚开始使用 Weblogic JMS。我能够将消息发送到队列并使用 messagebean 将它们拉出。现在我想将消息保存到数据库。
所以我的问题是,我如何告诉 JMS 在成功将消息写入数据库之前不要从队列中删除消息?
谢谢
我刚开始使用 Weblogic JMS。我能够将消息发送到队列并使用 messagebean 将它们拉出。现在我想将消息保存到数据库。
所以我的问题是,我如何告诉 JMS 在成功将消息写入数据库之前不要从队列中删除消息?
谢谢
我能够将消息发送到队列并使用 messagebean 将它们拉出。
我想您在谈论消息驱动的 bean ( MDB )?
所以我的问题是,我如何告诉 JMS 在成功将消息写入数据库之前不要从队列中删除消息?
MDB 是隐式容器管理事务的一部分,只要您的事务尚未提交(即,只要您的onMessage
方法尚未结束),消息就不会被删除。
在回滚的情况下(即您抛出异常或调用context.setRollbackOnly()
)MessageDrivenContext
,消息将被重新传递。您可以通过使事务 bean-managed 或 using 来避免这种行为@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
,但在您的情况下不应该是这种情况。坚持使用默认配置,一切都应该按照您的意愿工作。