【问题标题】:How to enable Stateful Retry using spring-cloud-stream-binder-kafka and RetryTemplate?如何使用 spring-cloud-stream-binder-kafka 和 RetryTemplate 启用有状态重试?
【发布时间】:2020-05-18 08:25:52
【问题描述】:

我想知道是否有办法使用 spring-cloud-stream-binder-kafka 启用 Stateful RetryTemplate。

我注意到有一个构造函数

RetryingMessageListenerAdapter(MessageListener<K, V> messageListener, RetryTemplate retryTemplate, RecoveryCallback<? extends Object> recoveryCallback, boolean stateful)

通过这段代码调试,我注意到布尔值 false 使用 spring-cloud-stream-binder-kafka 传递到 stateful 参数中。

相关链接:KafkaMessageDrivenChannelAdapter.javaRetryingMessageListenerAdapter.java

我有几个关于这个话题的问题。

  1. 有没有办法通过application.yml或ListenerContainerCustomizerRetryingMessageListenerAdapter的成员stateful设置为真?
  2. 有没有办法使用 spring-cloud-stream-binder-kafka 禁用RetryTemplate?我认为我发现的最接近的是在我的@StreamRetryTemplate 中将max-attempts 覆盖为1。
  3. 如果我使用 spring-kafka 提供的SeekToCurrentErrorHandler,有什么好处或理由我应该将stateful 设置为true,因为SeekToCurrentErrorHandler 已经是一个有状态的错误处理机制?

请告诉我。

【问题讨论】:

    标签: spring-boot spring-kafka spring-cloud-stream spring-retry spring-cloud-stream-binder-kafka


    【解决方案1】:

    由于SeekToCurrentErrorHandler 具有重试和退避功能,因此不再需要有状态重试。

    是的,要在活页夹中禁用重试,请设置 maxAttempts=1 并适当配置 STCEH。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 2021-02-17
      相关资源
      最近更新 更多