Paolo Patierno explains why you shouldn’t mix subscribe() and assign() in Kafka:
Another great advantage of consumers grouping is the rebalancing feature. When a consumer joins a group, if there are still enough partitions available (i.e. we haven’t reached the limit of one consumer per partition), a re-balancing starts and the partitions will be reassigned to the current consumers, plus the new one. In the same way, if a consumer leaves a group, the partitions will be reassigned to the remaining consumers.
What I have told so far it’s really true using the
subscribe()
method provided by the KafkaConsumerAPI. This method forces you to assign the consumer to a consumer group, setting thegroup.id
property, because it’s needed for re-balancing. In any case, it’s not the consumer’s choice to decide the partitions it wants to read for. In general, the first consumer joins the group doing the assignment while other consumers join the group.
Read on to learn more.