【问题标题】:Spring Kafka Stream - Unacknowledged message with no errorSpring Kafka Stream - 没有错误的未确认消息
【发布时间】:2020-02-01 21:27:32
【问题描述】:

我正在使用@StreamListener 来消费Kafka 消息。

我已将autoCommitOffset 设置为false 并将autoCommitOnError 设置为false

我将所有失败的消息发送到 DLQ 主题以及 maxAttempt 失败的消息。我在测试更改时有一个问题。

如果我没有确认消费的消息并且没有抛出任何错误会发生什么? Kafka 会在一段时间后自动发送消息吗?

当我抛出错误时,重放开始,它会重试直到我的 maxAttempt 配置并且失败的消息转到 DLQ 主题。

如果消费者没有抛出任何错误并且没有确认消息,请告诉我 Kafka 是否支持重试。

【问题讨论】:

    标签: apache-kafka stream spring-kafka consumer


    【解决方案1】:

    如果我没有确认消费的消息并且没有抛出任何错误会发生什么? Kafka 会在一段时间后自动发送消息吗?

    没有;除非您不再处理任何消息,否则不会,即使那样,您也只会在重新启动应用程序后获得重新发送。

    Kafka 不会“确认”离散消息;它只是将最后处理的偏移量存储在一个分区中。

    【讨论】:

    • 还有一个问题。使用 DLQ 主题时,有什么方法可以确认发送到 DLQ 主题的消息。目前发送到 DLQ 主题的消息在生产者端没有得到确认,因此存在重复消息(消费者主题和 DLQ 主题)
    • 参见stackoverflow.com/help/someone-answers 我们最近在rabbit binder 中添加了一个类似的功能(使用手动确认确认DLQ 消息)。 Kafka 的问题不大,因为该分区的下一条成功处理的消息将由侦听器代码(大概)提交其偏移量;这有效地提交了失败记录的偏移量。如果您认为活页夹应该确认 DLQ 的消息,请打开问题 in GitHub
    猜你喜欢
    • 1970-01-01
    • 2018-07-18
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2022-01-06
    • 2017-07-03
    相关资源
    最近更新 更多