工作生活

解决消息的幂等消费

2019-07-04  本文已影响0人  谁说咖啡不苦

通过消息的分区和位移来判断消息是否被消费。或者对性能要求不高的话,可以考虑接入事务来处理。
kafka消息幂等:

Producer 发送事务消息:
先设置幂等参数: enable.idempotence = true
然后在设置transaction.id
然后在发送消息的时候使用如下方法:

try {
    producer.beginTransaction();
    producer.send();
    producer.commitTransaction()
} catch(Exception e) {
    producer.abortTransaction();
}

在producer端发送的消息,即使是没有commit的消息,其实再broker端都是产生一个log,所以,对consumer端,如果没有做相应的处理的话,
还是会接收到这些消息。所以,对consumer端,我们需要做一些额外的处理:
consumer设置: isolation.level

上一篇下一篇

猜你喜欢

热点阅读