在spring-cloud-stream项目的文档中,我看到的唯一重试机制是单一的退避策略。
我希望实现的行为是三种不同的重试策略,以防在使用消息时抛出异常:
有没有办法为每种异常定义不同的重试策略? 我知道在spring-kafka中有能力提供RetryTemplate并实现上述行为。
我认为可能使用DLQ机制可以实现这种行为。
编辑:我使用Kafka作为消息传递中间件。
答案 0 :(得分:2)
从Spring Cloud Stream 2.0.0向上,您可以定义自己的RetryTemplate
:
@StreamRetryTemplate
public RetryTemplate myRetryTemplate() {
return new RetryTemplate();
}
此处提供完整文档:https://docs.spring.io/spring-cloud-stream/docs/current/reference/htmlsingle/#_retry_template
答案 1 :(得分:0)
目前无法在此范围内配置重试;有an open new feature request。
但是,您始终可以使用RetryTemplate
在侦听器中实现自己的逻辑,并禁用活页夹的重试。
如果您使用的是Rabbit绑定器,则可以使用DLQ和republishToDlq=true
,DLQ消息将包含异常标头。然后,您可以让另一个应用程序使用这些消息,并根据异常类型采取适当的操作。