【问题标题】:Message Header Update Error in ActiveMQ during Retry重试期间 ActiveMQ 中的消息头更新错误
【发布时间】:2015-04-09 06:25:57
【问题描述】:

我有一个要求,我必须在重试消息时添加和更新消息头。

这是我的听众或消费者。我的消息正在重试,但在设置标题时出现异常。请告知正确的方法。

根据 JMS 规范,消息头永远不是只读的。

javax.jms.MessageNotWriteableException:消息属性是只读的

  public void onMessage(Message message) {
    if (message != null && message instanceof TextMessage) {
        TextMessage textMessage = (TextMessage) message;
        try {
            String input = textMessage.getText();
            throw new Exception();
        } catch (Throwable t) {
            t.printStackTrace();
            try {
                message.setStringProperty("retryable","YES");
            } catch (JMSException e) {
                e.printStackTrace();
            }
            throw new RuntimeException(t);
        }
    }
}

【问题讨论】:

    标签: java spring jms activemq


    【解决方案1】:

    由于多种原因,您正在尝试的方法不起作用。您正尝试在传入消息上设置消息 PROPERTY,该消息确实是只读的。您收到的消息是实际消息的副本,而不是在 TX 中重新发送且符合重新发送条件的消息。

    要对在处理过程中遇到错误的已传递消息进行任何类型的更新,您需要创建一个新实例并用适当的信息装饰它,然后使用 MessageProducer 将其放回目的地。

    【讨论】:

      猜你喜欢
      • 2012-07-08
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多