Spring Kafka 中的侦听器级错误处理程序与容器级错误处理程序

Listener-level error handler vs Container-level error handler in Spring Kafka

与我的团队一起,我们正在尝试为多个微服务(对于大多数情况)设置通用的错误处理策略。我和我的团队正在努力理解侦听器级错误处理程序和容器级错误处理程序之间的区别。这个选择背后的真正含义是什么?仅仅是容器错误处理程序无法访问消息吗?

KafkaListenerErrorHandler 允许更细粒度的异常处理,我们可以使用异常的内容来定义它是否可重试。 在错误处理程序容器中似乎更复杂,之前可以提供自定义分类器但现在不行了,我们只能传递分类映射。

以前我们习惯使用文档中推荐的SeekToCurrentErrorHandler(现在是DefaultErrorHandler)。我看到了另一个与此主题相关的 Whosebug 线程,但我无法完全将其与我们的问题联系起来。该文档似乎没有说明此选择的含义。

非常感谢。

listener-level 错误处理程序的主要用例是 request/reply 处理;它允许错误处理程序向发送者发送一些其他结果以指示请求未被处理。正如您所说,它还提供对 spring-messaging 转换后的 Message<?> 的访问(可能带有转换后的有效负载);例如用于记录;它可以re-throw异常调用容器EH。

关于分类,该更改是允许动态添加和删除分类。如果您希望恢复旧行为(允许自定义分类器),请在 GitHub.

上提出问题