Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重试期间ActiveMQ中的消息头更新错误_Java_Spring_Jms_Activemq - Fatal编程技术网

Java 重试期间ActiveMQ中的消息头更新错误

Java 重试期间ActiveMQ中的消息头更新错误,java,spring,jms,activemq,Java,Spring,Jms,Activemq,我有一个要求,在消息重试的情况下,我必须添加和更新消息头 这是我的听众或消费者。我的邮件正在重试,但设置标头时出现异常。请告知正确的操作方法 根据JMS规范,它说消息头从来都不是只读的 javax.jms.MessageNotWriteableException:消息属性是只读的 public void onMessage(Message message) { if (message != null && message instanceof TextMessage)

我有一个要求,在消息重试的情况下,我必须添加和更新消息头

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

根据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);
        }
    }
}

由于许多原因,您正在尝试的方法不起作用。您正试图对传入的消息设置消息属性,该消息实际上是只读的。您收到的消息是实际消息的副本,而不是在发送内重新发送并符合重新交付条件的消息

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