mrm*_*one 1 apache-kafka kafka-consumer-api
我想弄清楚是否需要使用 KafkaConsumer.commitSync(Map offsets) 打开手动提交
当我使用记录时,我需要确保它们被我的服务处理,我不能失去它们,但是如果我的服务抛出一堆错误或崩溃,我不想移动偏移量,直到我知道它们已被处理。
commitSync 看起来像我需要调用的方法吗?
如果我没有使用 commitSync,而是使用自动偏移提交,当服务在尝试处理一些 Kafka 事件时崩溃时,我是否有可能丢失事件。换句话说,当使用自动偏移提交时,偏移量会在什么时候提交?
如果您不使用KafkaConsumer::commitSync而是选择自动提交机制,您将不会丢失任何消息,但是您可以多次处理相同的消息,例如,如果您处理消息并将结果保存在某处并且您的应用程序崩溃(在保存偏移量之前是自动提交) ),然后重新启动后,您的应用程序将从上次提交的偏移量开始处理,这可能会导致同一消息将被重新处理多次。
如果您使用 ,也会发生相同的情况KafkaConsumer::commitSync,但在这种情况下,您可以在处理每条消息后手动管理提交,并且最多只会重新处理一条消息。其缺点是吞吐量较低。
| 归档时间: |
|
| 查看次数: |
1221 次 |
| 最近记录: |