我想知道是否有一种方法可以使用spring-cloud-stream-binder-kafka启用有状态RetryTemplate。
我注意到有一个构造函数
RetryingMessageListenerAdapter(MessageListener<K, V> messageListener, RetryTemplate retryTemplate, RecoveryCallback<? extends Object> recoveryCallback, boolean stateful)
通过调试此代码,我注意到使用spring-cloud-stream-binder-kafka将布尔值false
传递到stateful
参数中。
相关链接:KafkaMessageDrivenChannelAdapter.java,RetryingMessageListenerAdapter.java
我对此主题有几个问题。
RetryingMessageListenerAdapter
将stateful
的成员ListenerContainerCustomizer
设置为true?RetryTemplate
的方法?我认为我找到的最接近的是将max-attempts
中的@StreamRetryTemplate
覆盖为1。SeekToCurrentErrorHandler
,由于stateful
已经是有状态的错误处理机制,我应该将SeekToCurrentErrorHandler
设置为true有什么好处或原因?请让我知道。
由于SeekToCurrentErrorHandler
具有重试和退避功能,因此不再需要有状态重试。
是,要在活页夹中禁用重试,请设置maxAttempts=1
并适当配置STCEH。