我有一个非常简单的用例。我有一个Kafka Consumer,我想将所有无效或部分消息移到一个死信队列中。文档中的示例使用SeekToCurrentErrorHandler
并附加DeadLetterPublishingRecoverer
。就我而言,我不想重试这些无效的消息,并且将maxFailures
设置为1
(我也尝试过0,结果相同)。这里的问题是,由于某种原因,SeekToCurrentErrorHandler
每当我收到一条无效消息时都会寻找该分区,即使我只是想将其移至DLT,这也会使整个过程非常缓慢。我不确定SeekToCurrentErrorHandler
的行为是否正确,但是如果没有SeekToCurrentErrorHandler
,还有更好的方法实现我的目标吗?我必须创建自定义ErrorHandler
吗?
P.S。
当存在更多无效消息然后使用者可以缓冲时,就会观察到SeekToCurrentErrorHandler
的异常行为。如果有几则消息,一切都很快,但是当我们有一大堆无效消息时,它的表现就会很糟糕。
答案 0 :(得分:1)
这是一个错误-是autograph。该版本将于下周发布的2.2.5版本中。
SeekToCurrentErrorHandler
和DefaultAfterRollbackProcessor
总是重试至少一次,即使maxAttempts
为1。