在@KafkaListener方法中,我已经插入到 partitionToUncommittedOffsetMap mapObject中,并且它正在运行。
在下面的代码片段中,如果我将对onPartitionsAssigned方法执行相同的操作,那么它将起作用吗? 解决平衡问题就是这种情况
public class RebalanceListener implements ConsumerAwareRebalanceListener {
private Map<TopicPartition, OffsetAndMetadata> partitionToUncommittedOffsetMap = new ConcurrentHashMap<>();
@Override
public void onPartitionsAssigned(Consumer<?, ?> consumer, Collection<TopicPartition> partitions) {
partitions.stream().forEach(tp -> {
partitionToUncommittedOffsetMap.put(tp, new OffsetAndMetadata(tp.hashCode()));
});
}
@Override
public void onPartitionsRevokedBeforeCommit(Consumer<?, ?> consumer, Collection<TopicPartition> partitions) {
commitOffsets(consumer);
}
private void commitOffsets(Consumer consumer) {
if (partitionToUncommittedOffsetMap != null && !partitionToUncommittedOffsetMap.isEmpty()) {
consumer.commitSync(partitionToUncommittedOffsetMap);
partitionToUncommittedOffsetMap.clear();
}
}
}