THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block |
---|
NONE: normal NEED_REJOIN: indicate the consumer to complete the revocation (if any) and re-join group immediately |
Correspondingly, the PartitionAssignor#Subscription / #Assignment class will be augmented as follows:
Code Block | ||
---|---|---|
| ||
class Subscription {
public Short version(); // new API, and current version == 2
public List<String> topics();
public List<TopicPartition> ownedPartitions(); // new API, if version < 2 should always be empty
public ByteBuffer userData();
}
class Assignment {
public Short version(); // new API, same as above
public List<TopicPartition> partitions();
public ConsumerProtocol.Errors error(); // new API, if version < 2 should always be NONE
public ByteBuffer userData();
} |
In addition, we want to resolve a long-lasting issue that when consumer's being kicked out of the group, since it no longer owns the partitions the `commit` call would doom to fail. To distinguish this case with the normal case that consumers are likely still within the group but just try to re-join, we introduce a new API into the consumer rebalance listener:
Code Block | ||
---|---|---|
| ||
public interface ConsumerRebalanceListener { void onPartitionsRevoked(Collection<TopicPartition> partitions); void onPartitionsAssigned(Collection<TopicPartition> partitions); // new API default void onPartitionsEmigrated(Collection<TopicPartition> partitions) { onPartitionsRevoked(partitions); } } |
...