Kafka Message Delivery Semantics

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chen517611641/article/details/88532564

At most once——消息可能会丢失但绝不重传
At least once——消息可以重传但绝不丢失
Exactly once—— 每一条消息只被传递一次

记录的是某个topic,某个分区的偏移量,topic name,partition number;

id,topicname,partition number,offset,这个地方的设计找到那篇博客,看看kafka+db同步事务的这种完整的设计模式;

Kafka Configuration

producer
acks
retries
enable.idempotence
max.in.flight.requests.per.connection

Consumer
enable.auto.commit
auto.commit.interval.ms
isolation.level

Kafka Client API

KafkaProducer
initTransactions
beginTransaction
sendOffsetsToTransaction
commitTransaction
abortTransaction

KafkaConsumer
commitSync
commitAsync
如果设置了consumer自动提交之后,也就是enable.auto.commit和auto.commit.interval.ms,则consumer每隔auto.commit.interval.ms自动commit;

Message Delivery Semantics Implementation

At most once
通过禁用 producer 的重传功能和让 consumer 在处理一批消息之前提交 offset,实现 at-most-once 的消息交付
producer:acks=0
consumer:consumer 在处理一批消息之前提交 offset;或者

At least once
Kafka 默认保证 at-least-once 的消息交付

猜你喜欢

转载自blog.csdn.net/chen517611641/article/details/88532564