gpt4 book ai didi

java - 如何配置Camel的RedeliveryPolicy retriesExhaustedLogLevel?

转载 作者:行者123 更新时间:2023-12-01 12:05:40 28 4
gpt4 key购买 nike

我在 Camel 路由中设置了一个 errorHandler,它将在将消息发送到死信 channel (在本例中为 activemq 队列)之前重试消息几次。我想要的是当消息重试最大次数失败然后被发送到死信队列时看到错误日志。

查看错误处理和死信 channel 的文档,RedeliveryPolicy 上似乎有 2 个可用选项:retriesAttemptedLogLevel 和 retriesExhaustedLogLevel。据说默认情况下 retriesExhaustedLogLevel 已设置为 LoggingLevel.ERROR,但当它耗尽所有重试并将消息路由到死信 channel 时,它似乎不会实际记录任何内容。

这是我通过 Java DSL 定义的 errorHandler。

.errorHandler(this.deadLetterChannel(MY_ACTIVE_MQ_DEAD_LETTER)
.useOriginalMessage()
.maximumRedeliveries(3)
.useExponentialBackOff()
.retriesExhaustedLogLevel(LoggingLevel.ERROR)
.retryAttemptedLogLevel(LoggingLevel.WARN))

我现在已经明确地将级别设置为“错误”,但它似乎仍然没有注销任何内容(到任何日志记录级别)。另一方面,retryAttemptedLogLevel 工作得很好,并将记录到适当的 LoggingLevel(即,我可以将 retryAttemptedLogLevel 设置为 LoggingLevel.ERROR 并将重试视为错误日志)。但是,我只希望在耗尽时有一个错误日志,而不是在后续重试可能成功时每次重试都有一个错误日志。

也许我遗漏了一些东西,但似乎 retriesExhaustedLogLevel 没有执行任何操作...或者如果 ErrorHandler 配置为 DeadLetterChannel,则不会记录任何内容。是否有我仍然需要的配置,或者 RedeliveryPolicy 的此功能未针对此特定 ErrorHandlerFactory 执行?

我还可以设置一条路由来发送耗尽的消息,该消息只需记录并路由到我的死信 channel ,但如果可能的话,我更愿意尝试使用 ErrorHandler 中已内置的内容。

最佳答案

将 ErrorHandler 的 DeadLetterChannel 更新为直接端点。保留 2 个 logLevel 配置相同。我收到了 3 次重试尝试的 WARN 日志,但没有错误日志告诉我重试已用尽。不过,我确实设置了一条小路由来监听记录的直接死信端点,并且该路由正在工作。

这不是我希望让错误日志能够耗尽资源的直接解决方案,但目前是一个可以接受的解决方法。

关于java - 如何配置Camel的RedeliveryPolicy retriesExhaustedLogLevel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27639628/

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