【问题标题】:What is the difference between MANUAL and MANUAL_IMMEDIATE in spring-kafka AckModespring-kafka AckMode中的MANUAL和MANUAL_IMMEDIATE有什么区别
【发布时间】:2020-07-10 21:47:24
【问题描述】:

从 spring-docs,我可以看到

MANUAL - 消息侦听器负责确认()确认;之后,应用与 BATCH 相同的语义。

MANUAL_IMMEDIATE - 当监听器调用 Acknowledgment.acknowledge() 方法时立即提交偏移量。

但是,如果侦听器提交偏移量,究竟有什么区别。 MANUAL 模式做了哪些额外的步骤

【问题讨论】:

    标签: apache-kafka kafka-consumer-api spring-kafka


    【解决方案1】:

    MANUAL - 处理完最后一次轮询的所有结果后,确认排队并在一次操作中提交偏移量。

    MANUAL_IMMEDIATE - 只要在侦听器线程上执行 ack,就会立即提交偏移量(同步或异步)。

    【讨论】:

    • 那么,在 spring-kafka 中,它可以对批处理模式产生影响——通过组合单个记录的偏移量?
    • 一点也不;另一种方式;对于记录侦听器,MANUAL 在批处理结束时提交偏移量,MANUAL_IMMEDIATE 一个接一个地提交它们。批处理侦听器几乎没有区别(只是时间上的细微差别,因为我们仍然要通过队列)。
    • 但是,使用批处理侦听器和带有 syncCommits 的 MANUAL_IMMEDIATE,您可以捕获异常;使用 MANUAL,错误会将批处理发送到错误处理程序。
    猜你喜欢
    • 2019-06-29
    • 2020-07-10
    • 1970-01-01
    • 2021-09-03
    • 2018-12-07
    • 1970-01-01
    • 2016-11-03
    • 2020-08-20
    • 2020-12-27
    相关资源
    最近更新 更多