gpt4 book ai didi

apache-kafka - BATCH 与 MANUAL 和 ack 与 commit

转载 作者:行者123 更新时间:2023-12-05 04:45:57 25 4
gpt4 key购买 nike

在文档中:

BATCH: Commit the offset when all the records returned by the poll()have been processed.

MANUAL: The message listener is responsible to acknowledge() theAcknowledgment. After that, the same semantics as BATCH are applied.

如果在两种情况下都处理了 poll() 返回的所有记录时提交了偏移量,那么我看不出有什么不同,你能给我一个不同使用 MANUAL ack 模式的场景吗?

如果我使用 MANUAL 模式并且我不在我的 KafkaListener 中调用 acknowledge() 是否与 BATCH 模式相同?如果我调用 acknowledge() 会发生什么变化?

也许我不明白 spring kafka 中 commit 和 acknowledge 概念之间的区别

最佳答案

在完美的世界中,当您的应用程序始终处于 UP 状态时,您绝对不需要这些提交。只是因为 Kafka Consumer 在内部跟踪轮询调用之间的偏移量。可能会出现这样的情况,即您真的不需要对交付给您的每一批处理做出 promise 。这时候 MANUAL 就派上用场了。使用 BATCH 模式,您没有控制权,框架会为您执行它。使用 MANUAL,您可以决定现在或稍后提交,有些是在处理了几批之后提交。

之所以称为acknowledge,是因为我们可能不会立即执行提交,而是将其存储在内存中以供后续轮询周期使用。提交必须完全在 Kafka 消费者线程上执行。

关于apache-kafka - BATCH 与 MANUAL 和 ack 与 commit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69005181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com