gpt4 book ai didi

jakarta-ee - 在发送到死信队列之前修改 JMS 消息

转载 作者:行者123 更新时间:2023-12-01 12:36:15 24 4
gpt4 key购买 nike

我正在使用 MDB 来处理 JMS 消息。万一出现异常,理想情况下,我还想用错误详细信息(异常消息)标记 JMS 消息,并允许它进入死信队列(在 Weblogic 服务器中配置)。

在 catch block 中,我对 JMS 消息对象进行了如下修改

msg.clearProperties();
msg.setStringProperty("error", e.getMessage());

并抛出一个 RuntimeException 将消息消费过程标记为失败,因此它移动到一个失败的请求队列(我配置 Weblogic NOT REDELIVER 消息)

根据配置,失败的消息会进入失败的请求队列 - 但是不包括“错误”属性。阅读 JMS 1.1 规范文档后,它表示重新传送的 JMS 消息将具有“原始”内容。在这种情况下,我强制 Weblogic 不重新传送它 - 不知道为什么我看不到我在消息上设置的自定义属性

这是预期的吗?如果是,有什么解决方法吗?

最佳答案

是因为你回滚了事务。您无法回滚 JMS 事务并仍然对消息进行更改。

您应该做的是手动将修改后的消息发送到同一事务中的错误队列。在这种情况下,您不能从 MDB 中抛出异常。

关于jakarta-ee - 在发送到死信队列之前修改 JMS 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29531922/

24 4 0
文章推荐: jackson - 在 Jax-RS 应用程序中注册 JodaModule
文章推荐: java - Android 中的日期格式
文章推荐: java - Gson - Json 列表到 Java List