【发布时间】:2020-09-27 22:37:58
【问题描述】:
我有一个使用 Kafka binder 的 Spring Cloud Stream 项目,我正在尝试了解并最终自定义 Cloud Stream 使用的 RetryTemplate。
我没有找到很多关于其工作原理的文档,但我所阅读的内容使我得出以下假设:
- Cloud Stream 默认配置并启用 Spring Retry,包括默认重试和退避策略。
- 默认情况下,
@StreamListener中任何未捕获的异常都会触发 Spring Retry - Cloud Stream 将以某种方式跟踪每条消息的 RetryContext 信息(如何?我不确定)
这些假设正确吗?
现在,在我的应用程序中,我有一个模式,其中一些消息可以立即处理,但其他消息必须推迟到稍后再试(使用指数退避等)。
我应该抛出异常导致 Spring Cloud Stream 在 binder 层重试这些消息,还是自己实现重试并跟踪我自己的重试上下文?
如果我应该依赖 Cloud Stream 的重试设置,我应该如何自定义退避策略等?
【问题讨论】:
标签: spring-cloud-stream spring-retry spring-cloud-stream-binder-kafka