Hi,

I sent this as JIRA here (1) but no response so far.

I tried it with 0.8.3 instead of 0.8.1.1 and the behaviour seems to be the same.

I think that the main problem is that I am instantiating consumers
very quickly one after another in a loop an it seems that the
automatic rebalancing does not work properly in this case.

I tried to play with

partition.assignement.strategy both roundrobin and range
rebalance.max.retries
rebalance.backoff.ms

but non of these seems to work well.

My scenario:

5 producers, 1 topic with 10 partitions, on the consumer side I am
calling Consumers.createJavaConsumer() 10 time, each time with
topicMap("mytopic", 1).

The result is that I am consuming messages only but 4 or 5 consumers
instead of 10. I managed to have 7 consumers once and they were
assigned 3,2,1,1,1,1,1 partitions each.

So, messages are indeed fetched from all partitions and they are
processed correctly but I fail to understand why automatic rebalancing
does not assign partitions to remaining free consumers in case some
consumer has more then 1 partition assigned.

I really like the idea of automatic rebalancing but I want to commit
offsets per partition and this is only achieved by having 1 consumer
thread per consumer connector each thread holding 1 partition.

I would be even satisfied with committing to more then 1 partition in
case some consumer fails and its parititions are migrated to another
consumer however I can not even have all 10 consumers busy in the
first place.

Why partitions are not spread evenly accross all consumers?

(1) https://issues.apache.org/jira/browse/KAFKA-2331

-- 
Stefan Miklosovic

Reply via email to