当前位置: 首页 > 知识库问答 >
问题:

Spring Boot Kafka:提交无法完成,因为组已经重新平衡

羊舌兴德
2023-03-14

今天,在我的Spring Boot和单实例Kafka应用程序中,我遇到了以下问题:

CommitFailedException:无法完成提交,因为组已经重新平衡并将分区分配给了另一个成员。这意味着对poll()的后续调用之间的时间比配置的max.poll.interval.ms长,这通常意味着poll循环花费了太多时间处理消息。您可以通过增加会话超时,或者通过使用max.poll.records减小poll()中返回的批的最大大小来解决这一问题。

这可能是什么原因,如何修复?据我所知--我的消费者被堵了很久,对心跳没有反应。我应该调整Kafka属性来解决这个问题。你能告诉我什么是确切的属性我应该调整和在哪里,例如在Kafka边或在我的应用程序SpringKafka边?

共有1个答案

雷硕
2023-03-14

默认情况下,Kafka将返回一批fetch.min.bytes(默认值1)的记录,直到max.poll.records(默认值500)或fetch.max.bytes(默认值52428800),否则它将等待fetch.wait.max.ms(默认值100)才能返回一批数据。您的使用者需要对该数据进行一些处理,然后再次调用poll()。您的使用者的工作应在max.poll.interval.ms内完成(在V2.0之前的默认时间为300000-5分钟,在V2.0之后的默认时间为30000-30秒)。如果在超时到期之前未调用poll(),则认为使用者失败,组将重新平衡以便将分区重新分配给另一个成员。

因此,要解决您的问题,请减少返回的消息数,或增加max.poll.interval.ms属性以避免超时和重新平衡。

 类似资料:
  • 环境:Hadoop2.75.+Flink1.4+Kafka0.10 我已经建立了一个实时数据处理项目。我使用Flink表源API(Kafka010JsonTableSource)作为表源。从kafka获取数据,然后执行一个SQL,最后输出到一个kafka主题。这是一个清晰的流程,但是我在Flink集群上执行时遇到了异常,下面是我的主要代码: 我已经启用了检查点。第一次在flink上执行时,我只是遵

  • 我正在使用kafka 0.9.0.1代理和0.9.0.1消费者客户端。我的使用者实例正在使用处理时间小于1秒的记录。和其他主要配置 一小时一两次。每天消耗约60亿次事件。似乎偏移量只存储在主题“__consumer_offsets”的一个分区中。它还会增加特定代理的负载。 有人知道这些问题吗?

  • 我使用的是Kafka0.10.2,现在面临一个CommitFailedException。如: 无法完成提交,因为组已重新平衡并将分区分配给另一个成员。这意味着对poll()的后续调用之间的时间比配置的max.poll.interval.ms长,这通常意味着poll循环花费了太多时间处理消息。您可以通过增加会话超时,或者通过使用max.poll.records减小poll()中返回的批的最大大小来

  • 有人能帮忙吗?原因和解决方法是什么? 此外,当我的1个kafka代理关闭时,我的kafka流应用程序没有连接到其他代理?我已经设置了

  • 说明 协议2.1中读取state=2,3的结账请求后,从业务系统完成结账,并提交结果到服务端 请求地址 http://api.dc78.cn/Api/cash_post_cash 请求方式 GET 请求参数 参数 参数名称 必填 描述 范例 id 请求编号 此编号为协议2.1中返回的结算单id bzid 结算业务单号 返回 {"status":1,"info":"提交成功"} 请求方式 INI 请

  • 秒付业务,下行接口收到cash-pay后(下行接口详见0.5),完成相应的结账业务流程,并上传确认支付订单处理完成。 请求参数说明 参数 描述 必填 示例值 类型 最大长度 action 接口参数组 是 object └action 需要调用的接口名称 是 cash_post_cash string get GET参数组,本组参数需要参与签名 是 object └id 支付单流水号payid 是