Actually, you are right. This can happen on a single topic too, if you have more than one consumer thread. Each consumer thread pulls data from a blocking queue, one or more fetchers are putting data into the queue. Say, you have two consumer threads and two partitions from the same broker. There is a single fetcher that fetches both partitions and it will put one partition's data into a separate queue. So, if one thread stops consuming data, it's queue will be full at some point. This will block the fetcher from putting the data into the other queue.
Thanks, Jun On Wed, Jun 12, 2013 at 9:10 PM, Philip O'Toole <phi...@loggly.com> wrote: > Jun -- thanks. > > But if the topic is the same, doesn't each thread get a partition? > Isn't that how it works? > > Philip > > On Wed, Jun 12, 2013 at 9:08 PM, Jun Rao <jun...@gmail.com> wrote: > > Yes, when the consumer is consuming multiple topics, if one thread stops > > consuming topic 1, it can prevent new data getting into the consumer for > > topic 2. > > > > Thanks, > > > > Jun > > > > > > On Wed, Jun 12, 2013 at 7:43 PM, Philip O'Toole <phi...@loggly.com> > wrote: > > > >> Hello -- we're using 0.72. We're looking at the source, but want to be > >> sure. :-) > >> > >> We create a single ConsumerConnector, call createMessageStreams, and > >> hand the streams off to individual threads. If one of those threads > >> calls next() on a stream, gets some messages, and then *blocks* in > >> some subsequent operation (and blocks for minutes), can it potentially > >> cause all other threads (calling next() on other streams) to block > >> too? Does something inside the ConsumerConnector block all other > >> stream processing? This would explain some behaviour we're seeing. > >> > >> Thanks, > >> > >> Philip > >> >