Java 即使轮询间隔非常大,协调器也不知道该成员

Java 即使轮询间隔非常大,协调器也不知道该成员,java,apache-kafka,Java,Apache Kafka,我们有一个具有以下配置的KStreams应用程序: props.setProperty(RETRIES_CONFIG, String.valueOf(Integer.MAX_VALUE)); props.setProperty(RETRY_BACKOFF_MS_CONFIG, "5000"); // 5 seconds props.setProperty(RECONNECT_BACKOFF_MS_CONFIG, "5000"); // 5 seconds props.setProperty(RE

我们有一个具有以下配置的KStreams应用程序:

props.setProperty(RETRIES_CONFIG, String.valueOf(Integer.MAX_VALUE));
props.setProperty(RETRY_BACKOFF_MS_CONFIG, "5000"); // 5 seconds
props.setProperty(RECONNECT_BACKOFF_MS_CONFIG, "5000"); // 5 seconds
props.setProperty(REQUEST_TIMEOUT_MS_CONFIG, "5000"); // 5 seconds
props.setProperty(SESSION_TIMEOUT_MS_CONFIG, "25000"); // 25 seconds session timeout
props.setProperty(MAX_POLL_RECORDS_CONFIG, "100"); // 100 records per poll
props.setProperty(MAX_POLL_INTERVAL_MS_CONFIG, String.valueOf(Integer.MAX_VALUE));
// do not add any more time to window retention period, delete immidiately
props.setProperty(WINDOW_STORE_CHANGE_LOG_ADDITIONAL_RETENTION_MS_CONFIG, "0");
即使使用非常大的
MAX\u POLL\u INTERVAL\u MS\u CONFIG
,我们也会看到如下错误(json中的格式化异常):


我们还需要配置什么?是否涉及其他参数?我必须提到Kafka代理是托管服务,我们不配置服务器端配置参数。此外,提交间隔设置为10秒。KStreams 2.4.0的其他所有内容都是默认值。

此问题的另一个原因是在
会话.timeout.ms中未发送心跳信号。所以也许你可以考虑增加这个。

心跳。间隔.ms:心跳到心跳之间的预期时间 使用卡夫卡集团管理设施时的消费者协调员。 心跳用于确保消费者的会话保持活动状态 以及在新消费者加入或离开市场时促进再平衡 小组。该值必须设置为低于session.timeout.ms,但 通常应设置为不高于该值的1/3。可能是 调整得更低,以控制正常运行的预期时间 重新平衡

session.timeout.ms:用于在 使用卡夫卡的集团管理设施。客户端定期发送消息 心跳向经纪人表明其活力。如果没有心跳 在此会话到期之前由代理接收 超时,则代理将从组中删除此客户端,然后重试 开始重新平衡

{
    "@timestamp": "2020-02-07T15:30:19.631Z",
    "message": "[Consumer clientId=client-03a38ada-b39c-497a-acd4-aa95066fdc8a-StreamThread-6-consumer, groupId=group-name] Offset commit failed on partition group-name-repartition-3 at offset 9066: The coordinator is not aware of this member.",
    "logger_name": "org.apache.kafka.clients.consumer.internals.ConsumerCoordinator",
    "level": "ERROR"
}