首页 > 解决方案 > 如果我将自动提交设置为 true 和

问题描述

我正在阅读https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/connectors/datastream/kafka/#kafka-consumers-offset-committing-behaviour-configuration

它说:

Checkpointing enabled:如果启用了 checkpointing,则 Flink Kafka Consumer 将在 checkpoint 完成时提交存储在 checkpointed 状态中的偏移量。这确保了 Kafka 代理中已提交的偏移量与检查点状态中的偏移量一致。用户可以通过调用消费者的 setCommitOffsetsOnCheckpoints(boolean) 方法来选择禁用或启用偏移提交(默认情况下,行为为 true)。请注意,在这种情况下,属性中的自动定期偏移提交设置将被完全忽略。

如果我以 10 秒的间隔启用检查点,我have setCommitOffsetsOnCheckpoints也设置为 true,并 enable.auto.commit=trueauto.commit.interval.ms=5000Kafka 消费者属性中设置 and 。

那么偏移量提交会有什么表现呢?偏移量会每 10 秒提交 3 次吗?一次是在做检查点时来自 flink,两次来自 Kafka 消费者的自动提交?

标签: apache-flink

解决方案


enable.auto.commit:自动提交offset,这个值的配置不是最终的offset提交方式,需要考虑用户是否开启了checkpoint,会在后面的源码分析中解释

consumer.setCommitOffsetsOnCheckpoints(true) 解释:设置checkpoint后,提交offset,即oncheckpoint方式。该值默认为 true。该参数会影响offset的提交方式。下面源码就来分析一下

因此,根据您所说的报价并在互联网上进一步查看,Flink 消费者在启用检查点时将忽略 auto.commit 配置,偏移量提交行为将由定义 consumer.setCommitOffsetsOnCheckpoints定义(true默认情况下)

https://www.programmersought.com/article/84744879064/

来自 Flink 文档

Checkpointing disabled:如果 checkpointing 被禁用,Flink Kafka Consumer 依赖于内部使用的 Kafka 客户端的自动周期性偏移提交能力。因此,要禁用或启用偏移提交,只需在提供的 Properties 配置中将 enable.auto.commit / auto.commit.interval.ms 键设置为适当的值。

Checkpointing enabled:如果启用了 checkpointing,则 Flink Kafka Consumer 将在 checkpoint 完成时提交存储在 checkpointed 状态中的偏移量。这确保了 Kafka 代理中已提交的偏移量与检查点状态中的偏移量一致。用户可以通过调用消费者的 setCommitOffsetsOnCheckpoints(boolean) 方法来选择禁用或启用偏移提交(默认情况下,行为为 true)。请注意,在这种情况下,属性中的自动定期偏移提交设置将被完全忽略。

请注意,在这种情况下,属性中的自动定期偏移提交设置被完全忽略


推荐阅读