Java 重试期间ActiveMQ中的消息头更新错误
我有一个要求,在消息重试的情况下,我必须添加和更新消息头 这是我的听众或消费者。我的邮件正在重试,但设置标头时出现异常。请告知正确的操作方法 根据JMS规范,它说消息头从来都不是只读的 javax.jms.MessageNotWriteableException:消息属性是只读的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)
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将其放回目标