没有SeekToCurrentErrorHandler的DeadLetterPublishingRecoverer

时间:2019-03-22 08:02:00

标签: spring apache-kafka spring-kafka

我有一个非常简单的用例。我有一个Kafka Consumer,我想将所有无效或部分消息移到一个死信队列中。文档中的示例使用SeekToCurrentErrorHandler并附加DeadLetterPublishingRecoverer。就我而言,我不想重试这些无效的消息,并且将maxFailures设置为1(我也尝试过0,结果相同)。这里的问题是,由于某种原因,SeekToCurrentErrorHandler每当我收到一条无效消息时都会寻找该分区,即使我只是想将其移至DLT,这也会使整个过程非常缓慢。我不确定SeekToCurrentErrorHandler的行为是否正确,但是如果没有SeekToCurrentErrorHandler,还有更好的方法实现我的目标吗?我必须创建自定义ErrorHandler吗?


P.S。

当存在更多无效消息然后使用者可以缓冲时,就会观察到SeekToCurrentErrorHandler的异常行为。如果有几则消息,一切都很快,但是当我们有一大堆无效消息时,它的表现就会很糟糕。

1 个答案:

答案 0 :(得分:1)

这是一个错误-是autograph。该版本将于下周发布的2.2.5版本中。

  

SeekToCurrentErrorHandlerDefaultAfterRollbackProcessor   总是重试至少一次,即使maxAttempts为1。