我可以在onPartitionsAssigned上添加Uncommitted Offset分区吗

时间:2019-11-20 04:57:11

标签: spring-kafka

在@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();
    }
}
}

0 个答案:

没有答案