https://www.safaribooksonline.com/library/view/kafka-the-definitive/9781491936153/ch04.html mentions that "As long the consumer is sending heartbeats in regular intervals, it is assumed to be alive, well and processing messages from its partitions. In fact, the act of polling for messages is what causes the consumer to send those heartbeats. If the consumer stops sending heartbeats for long enough, its session will time out and the group coordinator will consider it dead and trigger a rebalance."
Similarly https://kafka.apache.org/090/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html specifies that "The broker will automatically detect failed processes in the test group by using a heartbeat mechanism. The consumer will automatically ping the cluster periodically, which lets the cluster know that it is alive. As long as the consumer is able to do this it is considered alive and retains the right to consume from the partitions assigned to it. If it stops heartbeating for a period of time longer than session.timeout.ms then it will be considered dead and its partitions will be assigned to another process. "
In my application, the processing of messages received from previous poll() can take upto hours before it calls another poll(). Note: I disable auto commit because I don't always know how long it would take to process all the previous messages.
a) Will that cause group coordinator to consider the consumer dead or inactive?
b) Are there other ways to send heartbeat messages to group coordinator to keep the session active?
c) Will session.timeout.ms have any effect here on keeping consumer alive/active?