If you choose to manually assign topic partitions, then you won't be using
the group protocol to dynamically manage partition assignments and thus
don't have a need to poll or heartbeat at any interval. See "Manual
Partition Assignment" in
https://kafka.apache.org/24/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html
 .

On Thu, May 7, 2020 at 3:52 PM Boyuan Zhang <boyu...@apache.org> wrote:

> Hi team,
>
> I'm building an application which uses Kafka Consumer APIs to read messages
> from topics. I plan to manually assign TopicPartitions to my consumer and
> seek a certain offset before starting to read. I'll also materialize the
> last read offset and reuse it when creating the consumer later.
>
> Within my usage, I' curious whether I need to commit offset automatically
> or manually. While going through the doc, it seems like committing offset
> is only important to dynamic assignment.
>
> Another question around manual assignment is, is it still true that I need
> to call poll() continuously to keep the consumer in the group described as
> below?
>
> > It is also possible that the consumer could encounter a "livelock"
> > situation where it is continuing to send heartbeats, but no progress is
> > being made. To prevent the consumer from holding onto its partitions
> > indefinitely in this case, we provide a liveness detection mechanism
> using
> > the max.poll.interval.ms setting. Basically if you don't call poll at
> > least as frequently as the configured max interval, then the client will
> > proactively leave the group so that another consumer can take over its
> > partitions. When this happens, you may see an offset commit failure (as
> > indicated by a CommitFailedException
> > <
> https://kafka.apache.org/25/javadoc/org/apache/kafka/clients/consumer/CommitFailedException.html>
> thrown
> > from a call to commitSync()
> > <
> https://kafka.apache.org/25/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html#commitSync--
> >).
> > This is a safety mechanism which guarantees that only active members of
> the
> > group are able to commit offsets. So to stay in the group, you must
> > continue to call poll.
>
> What will happen to poll() with manual assignment if the consumer is
> removed from the group?
>
> Thanks for your help!
>
> Boyuan
>

Reply via email to