当前位置: 首页 > 知识库问答 >
问题:

如何使用spring kafka批监听器进行有状态重试

熊哲圣
2023-03-14

我正在阅读这里的文档https://docs.spring.io/spring-kafka/docs/2.2.6.release/reference/html/#retily-deliveries,我不知道用批侦听器实现有状态重试的正确方法是什么

文档中说,“没有为批处理消息侦听器提供重试适配器,因为框架不知道在批处理的哪个地方发生了故障”。

这对我的用例不是问题,因为我只想重试整个批处理。

文档建议我在侦听器本身中使用RetryTemplate。好的,我能做到。

下一节将讨论如何使用有状态重试标志在重试之间轮询使用者,以防止代理丢弃我的使用者。

我如何配置一个批处理侦听器来做到这一点?批侦听器是否支持有状态重试标志?如果我的重试逻辑在侦听器内部,那不会阻止轮询吗?statefulRetry标志到底做什么?

共有1个答案

胥诚
2023-03-14

否;不能将RetryTemplate添加到批处理侦听器的容器工厂

java.lang.ClassCastException:org.springframework.kafka.listener.adapter.batchmessagingmessageListeneradapter不能强制转换为org.springframework.kafka.listener.messageListener

我们将用一个更有意义的错误来清理它…

对于即将发布的2.3版本(当前将于下周五发布的候选版本),您可以向SeekToCurrEnterrorHandler添加Backoff,该版本提供了与RetryTemplate类似的功能;对于当前版本,将立即尝试重新交付。

而且,最近合并的另一个新特性提供了一种机制,可以在批处理中从特定索引重试。

 类似资料:
  • 我想使用Spring Kafka API实现一个有状态侦听器。 鉴于以下情况: ConcurrentKafkaListenerContainerFactory,并发设置为“n” Spring@Service类上的@KafKalistener注释方法

  • 本文向大家介绍Android scrollview如何监听滑动状态,包括了Android scrollview如何监听滑动状态的使用技巧和注意事项,需要的朋友参考一下 ScrollView 视图的滚动过程,其实是在不断修改原点坐标。当手指触摸后,ScrollView会暂时拦截触摸事件,使用一个计时器。假如在计时器到点后没有发生手指移动事件,那么ScrollView发送tracking events

  • ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。 为此,Linux 提供了  top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。 top 命令的基本格式如下:

  • 常常它是有用的能够接受附加的回调为了切割关注点穿过一些不同的重试 为了这个目的Spring Batch 提供了RetryListene 接口,RetryTemplate 允许使用者注册RetryListene,并且他们将发送回调随从RetryContext和Throwable,在迭代期间可用。 这个接口看起来像这样: public interface RetryListener { voi

  • 问题内容: 我的组件内部有这个: 问题在于监听器内部不是最新的,因为它不在渲染器内部。它已经连接了。有什么想法我该如何解决? 谢谢! 问题答案: 问题是由于运行效果时形成的闭合。由于您将设置为仅在初始安装时运行,因此它从声明时形成的闭包中获取值,因此即使更新,内部也将引用最初存在的相同值。 由于您不想访问其中的值,而只是根据先前的值更新状态,因此您可以简单地使用setter的回调模式