kafka 手动提交的(同步+异步)提交方式
发布时间
阅读量:
阅读量
在常规运行状态下,自动位移提交机制能够有效避免消息丢失以及重复消费的问题。然而,在编程实践中,异常情况难以完全规避,而自动位移提交方式在精确控制位移方面也存在一定的局限性。
Kafka 还支持手动位移提交的模式,这种方式赋予开发人员对消费进度管理更大的灵活性。 在实际应用中,并非所有消息的拉取都等同于消费完成,通常还需要将消息存储至数据库、写入本地缓存或执行更复杂的业务流程。只有当所有相关操作均处理完毕后,才能确认消息已被成功消费。通过手动提交机制,开发人员可以根据具体程序逻辑,在适当的位置进行位移的提交操作。若要启用手动提交功能,则需要将消费者客户端参数 enable.auto.commit 设置为 false ,具体示例如下:
properties.put("enable.auto.commit", "false");
手动提交方式可进一步划分为同步提交与异步提交两种形式,分别对应 KafkaConsumer 类中提供的 commitSync()与 commitAsync()这两种方法。本文首先对同步提交的实现方式进行说明。
commitSync()方法
以下为定义内容:
public void commitSync()
此方式操作较为便捷,以下将通过具体示例展示其在同步提交过程中
全部评论 (0)
还没有任何评论哟~
