面试官:生产者重试机制导致Kafka重复消息,知道怎么处理吗
噢噢,Kafka支持幂等生产者,可以开启这个模块。
它是这样的,发送消息时同时发送生产者id、消息序列号,kafka会根据这些信息避免重复消息被写入。
面试官:Kafka事务,应该知道吧
嗯嗯知道的,消息队列事务主要应用在流式应用程序中。
比如主题A的消息A过来,消费者的消费逻辑是发送消息B给主题B。
所以我们要确保消费者成功提交偏移量、新消息成功写入,这两步操作要么成功要么都不成功。
面试官:你说的这个场景,不使用事务会有什么问题吗
可能会出现重复消费的问题。
比如消费消息A,新消息被成功写入,但提交偏移量失败了。Broker会认为该消息未被消费,此时消息A会分给其他消费者重复消费。
面试官:那Kafka事务一般在什么场景下使用呢
我举个例子吧。
例如支付场景下有很多流程步骤,用户支付后,发送支付消息过来。消费者扣款后,还需要发送另一个消息去给商家转账。
这个场景下就需要事务的支持了,保证两个步骤的事务性。
未完待续。。。。。。
好了,今天的分享就先到这,我们下期【Kafka系列】继续。