Spring 具有基于时间的自动提交的 Cloud Stream Kafka 消费者
Spring Cloud Stream Kafka consumer with time based auto commit
我有一个使用 Kafka 活页夹的 Spring Cloud Stream 应用程序。它似乎是根据 AckMode=BATCH
自动提交偏移量(必须在调试模式下找到它,因为它没有出现在文档中)。这会导致代理在提交频率方面产生大量开销。
我想切换到使用本机 Kafka 自动提交,例如:
enable.auto.commit: true
auto.commit.interval.ms: 5000
或者切换到使用 5000 ms ackTime 的 TIME 配置,如此处所述:
https://docs.spring.io/spring-kafka/reference/htmlsingle/#committing-offsets
这可以使用 spring-cloud-stream-binder-kafka 吗?你能提供一个示例配置吗?上面的本机配置似乎被忽略了(在配置块中)。
如果 enable.auto.commit
为 true
,则忽略 AckMode
。但是请记住,除非您使用的是 0.10.1.0 或更高版本的客户端,否则如果您的消费者速度较慢,代理将执行重新平衡,因为为了支持此模式,我们必须在消费者线程上调用您的侦听器。参见 KIP-62。
自(即将发布的)版本 1.3 起,始终在消费者线程上调用侦听器,因为消除了再平衡威胁(1.3 及更高版本使用 0.11 客户端)。
您还可以使用 AckMode.TIME
、AckMode.COUNT
或 AckMode.COUNT_TIME
以在提交间隔上获得更大的灵活性。您可能会发现 COUNT_TIME
提供了两全其美的方法。
请记住,基于时间(或基于高计数)的确认策略会增加失败后重新交付的风险。
我有一个使用 Kafka 活页夹的 Spring Cloud Stream 应用程序。它似乎是根据 AckMode=BATCH
自动提交偏移量(必须在调试模式下找到它,因为它没有出现在文档中)。这会导致代理在提交频率方面产生大量开销。
我想切换到使用本机 Kafka 自动提交,例如:
enable.auto.commit: true
auto.commit.interval.ms: 5000
或者切换到使用 5000 ms ackTime 的 TIME 配置,如此处所述:
https://docs.spring.io/spring-kafka/reference/htmlsingle/#committing-offsets
这可以使用 spring-cloud-stream-binder-kafka 吗?你能提供一个示例配置吗?上面的本机配置似乎被忽略了(在配置块中)。
如果 enable.auto.commit
为 true
,则忽略 AckMode
。但是请记住,除非您使用的是 0.10.1.0 或更高版本的客户端,否则如果您的消费者速度较慢,代理将执行重新平衡,因为为了支持此模式,我们必须在消费者线程上调用您的侦听器。参见 KIP-62。
自(即将发布的)版本 1.3 起,始终在消费者线程上调用侦听器,因为消除了再平衡威胁(1.3 及更高版本使用 0.11 客户端)。
您还可以使用 AckMode.TIME
、AckMode.COUNT
或 AckMode.COUNT_TIME
以在提交间隔上获得更大的灵活性。您可能会发现 COUNT_TIME
提供了两全其美的方法。
请记住,基于时间(或基于高计数)的确认策略会增加失败后重新交付的风险。