Thanks for the pointer! Does that mean I don't need to commit the offset with managing partitions and offset manually?
On Thu, May 7, 2020 at 8:02 PM Chris Toomey <ctoo...@gmail.com> wrote: > 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 > > >