返回到文章
优化文章内容

采纳

编辑于 3年前

Kafka消费端,配置设置为手动提交时,单线程拉取消息,多线程处理消息,然后单线程手动提交时,如何提交?

由于处理消息是在多线程中处理的,消息处理完成的时间顺序可能得不到保证,具体如下图所示:

kafka

但是我看kafkaConsumer的api同步提交只有这个方法commitSync(final Map<topicpartition, offsetandmetadata=""> offsets), key为topic和partition, value为offset, 也就是说,我的对于同一个topic的同一个partition, 一次提交只能提交一个offset吗? 是不是我的理解有误? 或者说在此场景下,有没有更好的提交offset的办法?

Kafka消费端,配置设置为手动提交时,单线程拉取消息,多线程处理消息,然后单线程手动提交时,如何提交?

Kafka消费端,配置设置为手动提交时,单线程拉取消息,多线程处理消息,然后单线程手动提交时,如何提交?

在上述场景时,由于处理消息是在多线程中处理的,消息处理完成的时间顺序可能得不到保证,具体如下图所示:
screenshot
但是我看kafkaConsumer的api同步提交只有这个方法commitSync(final Map offsets), key为topic和partition, value为offset, 也就是说,我的对于同一个topic的同一个partition, 一次提交只能提交一个offset吗? 是不是我的理解有误? 或者说在此场景下,有没有更好的提交offset的办法?

记录

编辑于 3年前

Kafka消费端,配置设置为手动提交时,单线程拉取消息,多线程处理消息,然后单线程手动提交时,如何提交?

kafka
kafka


在上述场景时,由于处理消息是在多线程中处理的,消息处理完成的时间顺序可能得不到保证,具体如下图所示:
screenshot
但是我看kafkaConsumer的api同步提交只有这个方法commitSync(final Map offsets), key为topic和partition, value为offset, 也就是说,我的对于同一个topic的同一个partition, 一次提交只能提交一个offset吗? 是不是我的理解有误? 或者说在此场景下,有没有更好的提交offset的办法?