-
一、什么是消息队列的幂等性?
-
-
Kafka这里的幂等性指的是一般Producer发送了多少消息,consumer就消费了多少消息,保证了消费的唯一性,也是符合exactly-once语义的操作;
-
不会发生消息丢失或者消息重复的情况;
-
-
二、首先看一下Kafka的消息传输中的三种语义:
-
-
消息最多发送一次(At-Most-Once)
-
-
消息已经发出,不管收没收到,会存在消息丢失的情况;
-
通过配置实现
-
-
1)enable.auto.commit设置为True
2)auto.commit.interval.ms设置为一个较低的时间范围。
3)consumer.commitSync()不调用该方法。
-
-
由于上面的配置,就可以使Kafka有线程负责按照指定的时间范围间隔提交偏移offset, 但这种方式会出现Kafka消费出现两种语义:
-
-
消费语义最多一次:消费者的偏移量已经提
-
-