首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Kafka消费者ACKMODE & Kafka事务的生产者缓冲

Spring Kafka消费者ACKMODE & Kafka事务的生产者缓冲
EN

Stack Overflow用户
提问于 2020-03-12 08:47:09
回答 1查看 546关注 0票数 0

我需要使用consume process-produce模式来处理Kafka消息,并配置了一个带有Kafka事务管理器的Spring Kafka侦听器容器,还设置了transaction-id-prefix来启用Kafka事务。我使用了批处理的ack-mode,并试图了解在这种事务模式下,何时会实际提交偏移量。文档似乎表明,一旦使用了轮询中的所有记录,ack-mode批量提交偏移量-在事务上下文中也是如此,即每个轮询1个事务?

或者在使用Kafka事务时忽略了ack-mode批处理(每个侦听器调用一个事务)?如果是这样,如果消费者每次读取记录时都需要与代理交谈,那么它对消费者性能的负面影响有多大?这是否也意味着我的响应生产者不能再缓冲记录并将它们批量发送给broker,并且我失去了生产者的异步性?

很抱歉在同一篇文章中询问多个问题(可能太多了)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-12 23:03:56

当使用事务时,根本不使用AckMode。记录的偏移量在监听程序退出时、事务提交之前发送。

您可以通过使用批处理侦听器进行改进,在此批处理侦听器中,您可以在单个调用中获取List<>中的所有记录。

但是,为了正确支持生产者隔离,您还应该将subBatchPerPartition (在2.3.2中添加)设置为true,这样我们就可以为poll()返回的每个topic/partition获取一个事务。

同样,当监听程序退出时,将发送子批次的偏移量。

如果您不关心隔离,您可以在一个事务中处理整个批次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60646242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档