我正试图在我的消息中添加自定义标题,所以每当出现异常并在死信队列中结束时,我就可以看到异常是什么。然而,我所有的尝试都失败了。
不允许将异常设置为有效负载中的属性。
@Component
public class ProcessRoute extends RouteBuilder {
...
@Override
public void configure() throws Exception {
onException(Exception.class)
.log("Error for ${body}! Requeue")
.redeliveryDelay(2000)
.maximumRedeliveries(3)
.handled(true)
.setHeader("TEST", constant("TEST"))
.process(e -> {
e.getOut().setHeader("TEST", "TEST");
e.setProperty("TEST","TEST");
});
from(SOME_ROUTE)
.doSomeStuff()
.to(RABBITMQ);
}
...
}RABBITMQ-string:
rabbitmq://foo
?exchangeType=topic
&addresses=localhost:1234
&routingKey=#
&autoDelete=false
&queue=bar
&autoAck=false
&deadLetterExchange=DLX
&deadLetterQueue=bar.dlq
&deadLetterExchangeType=direct
&deadLetterRoutingKey=#
&username=foo
&password=bar导致死信队列上的消息:

发布于 2019-05-16 20:12:48
如果按照Camel RabbitMQ组件已经建立的模式使用标头键,那么当消息发布到RabbitMQ时,您的自定义标头将被选中。
从上面的代码中提取,而不是:
.setHeader("TEST", constant("TEST"))这样做:
.setHeader("rabbitmq.TEST", constant("TEST"))Camel RabbitMQ组件似乎忽略了骆驼交换中可能存在的所有其他非"rabbitmq.*“标题,这可能是有充分理由的。在发布给RabbitMQ的消息的上下文中,可能有相当多的信息是没有意义的。
https://stackoverflow.com/questions/54595488
复制相似问题