gpt4 book ai didi

java - Camel 将 REDELIVERY_MAX_COUNTER 重置为 0 或 n 不起作用

转载 作者:行者123 更新时间:2023-11-30 04:12:22 24 4
gpt4 key购买 nike

正如这个链接所说的dead-letter-channel我发现消息 header 包含最大重新传递时间。

从 2.6 开始: header CamelRedeliveryMaxCounter(也在 Exchange.REDELIVERY_MAX_COUNTER 上定义)包含最大重新投递设置

所以我尝试将 Exchange.REDELIVERY_MAX_COUNTER 设置为 6

arg0.getIn().setHeader(Exchange.REDELIVERY_MAX_COUNTER,6);
int max =arg0.getIn().getHeader(Exchange.REDELIVERY_MAX_COUNTER, Integer.class);
System.out.println(max);

这是我的完整代码

public class ActivemqRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {

from("activemq:queue:MyQueue")
.onException(IOException.class)
.maximumRedeliveries(2)
.redeliveryDelay(4000)
.handled(true)
.beanRef("msgPro2","SendMail")
.to("activemq:queue:MyQueue.DLQ")
.end()
.transacted()
.process(new Processor() {
@Override
public void process(Exchange arg0) throws Exception {
arg0.getIn().setHeader(Exchange.REDELIVERY_MAX_COUNTER,6);
int max = arg0.getIn().getHeader(Exchange.REDELIVERY_MAX_COUNTER, Integer.class);
System.out.println(max);
/*error producing code*/
}}
);

由于 Processor() 中存在错误,因此消息尝试重新传递 2 次,但我将 Exchange.REDELIVERY_MAX_COUNTER 重置为 6 次,因此消息为本来应该重新投递 6 次,但并没有发生,而是只重新投递了 2 次。但我可以在输出中看到 6,因为我打印了 max 值。谁能建议我会有什么问题吗?

最佳答案

该属性是只读属性。如果您想以动态方式重新投递次数,可以使用 retryWhile。

关于java - Camel 将 REDELIVERY_MAX_COUNTER 重置为 0 或 n 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19300422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com