楼主解决了吗?我的也是这样,我3台服务器,创建主题时,指定3个副本,2个分区,但是只存在一个服务器节点上了,很纳闷
org.apache.kafka.clients.consumer.CommitFailedException: Commit cannot be completed since the group has already rebalanced and assigned the partitions to another member. This means that the time between subsequent calls to poll() was longer than the configured max.poll.interval.ms, which typically implies that the poll loop is spending too much time message processing. You can address this either by increasing the session timeout or by reducing the maximum size of batches returned in poll() with max.poll.records.
转译:
org.apache.kafka.client.consumer.CommitFailedException。无法完成提交,因为该组已经重新平衡并将分区分配给另一个成员。这意味着后续调用poll()的时间间隔长于配置的max.poll.interval.ms,这通常意味着poll循环花费了太多的时间进行消息处理。你可以通过增加会话超时或用max.poll.records减少poll()中返回的最大批次大小来解决这个问题。
使用消费者组管理时poll()调用之间的最大延迟。消费者在获取更多消息之前可以空闲的时间量的上限。如果此超时时间期满之前poll()没有调用,则该消费者被视为失败,并且分组将重新平衡,以便将分区重新分配给别的成员。
在单次调用poll()中返回的最大消息数。
当你提交offset的时候,处理消息已经超过了30秒(默认),消费者已经从成员里踢出来了,重新进行消费者平衡,所以你无法提交。
建议里给了2个方式,通过加大max.poll.interval.ms
超时时间,默认30秒,或者减少max.poll.records
批次的消息数,少拿点消息,默认500条。
props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG,60000);
props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG,60000);
props.put(ConsumerConfig.FETCH_MAX_WAIT_MS_CONFIG,60000);
props.put(ConsumerConfig.REQUEST_TIMEOUT_MS_CONFIG,70000);
这些是消息二进制文件鸭兄得,如果没设置配置 ”log.segment.bytes “ 默认是满1G得时候打一次包的