1

我想知道是否有一种方法可以使用 spring-cloud-stream-binder-kafka 启用 Stateful RetryTemplate。

我注意到有一个构造函数

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

通过这段代码进行调试,我注意到布尔值是使用 spring-cloud-stream-binder-kafkafalse传递给参数的。stateful

相关链接:KafkaMessageDrivenChannelAdapter.javaRetryingMessageListenerAdapter.java

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

  1. 有没有办法通过 application.yml 或将RetryingMessageListenerAdapter's member设置stateful为 true ListenerContainerCustomizer
  2. 有没有办法禁用RetryTemplate使用 spring-cloud-stream-binder-kafka?我认为我发现的最接近的是max-attempts在我的@StreamRetryTemplate.
  3. 如果我使用的是 spring-kafka 提供的,那么我应该设置为 trueSeekToCurrentErrorHandler有什么好处或理由,因为它已经是一个有状态的错误处理机制?statefulSeekToCurrentErrorHandler

请告诉我。

4

1 回答 1

1

现在不再需要有状态重试,因为它SeekToCurrentErrorHandler具有重试和退避功能。

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

于 2020-05-18T14:50:59.617 回答