Thanks! That helps a lot.

On Thu, May 7, 2020 at 8:10 PM Chris Toomey <ctoo...@gmail.com> wrote:

> Right -- offset storage is an optional feature with Kafka, you can always
> choose to not use it and instead manage offsets yourself.
>
>
> On Thu, May 7, 2020 at 8:07 PM Boyuan Zhang <boyu...@apache.org> wrote:
>
> > 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
> > > >
> > >
> >
>

Reply via email to