我正在使用MDB
来处理JMS
消息。如果出现异常,我理想情况下也希望用错误详细信息标记JMS
消息(异常消息)并允许它进入死信队列(在Weblogic服务器中配置)。
在catch块中,我将JMS
Message对象变异如下
msg.clearProperties();
msg.setStringProperty("error", e.getMessage());
并抛出一个RuntimeException
,标记消息使用过程失败,因此它移动到一个失败的请求队列(我配置了Weblogic NOT REDIRIVER消息)
根据配置,消息失败转到失败的请求队列 - 但是错误'财产不包括在内。阅读JMS
1.1规范文档后,它会说重新发送的JMS
消息会包含“原始数据”。内容。在这种情况下,我强迫Weblogic不要重新发送它 - 不知道为什么我看不到我在消息上设置的自定义属性
这是预期的吗?如果是,有任何解决方法吗?
答案 0 :(得分:4)
这是因为你回滚了这个交易。您无法回滚JMS事务并仍然对消息进行更改。
您应该做的是将修改后的消息手动发送到同一事务中的错误队列。在这种情况下,您不能从MDB中抛出异常。