kafka顺序消费消息的情况

由于生产者发送到多个分区的消息分发策略默认情况下kafka 采用的是 hash 取模的分区算法,无法保证所有消息在多个分区内同时消费时按照写入前的顺序消费。

如果发送端配置了重试机制,kafka不会等之前那条消息完全发送成功才去发送下一条消息,这样可能会出现:发送了1,2,3条消息,第一条超时了,后面两条发送成功,再重试发送第1条消息,这时消息在broker端的顺序就是2,3,1了。发送端消息发送已经乱序,到了消费端消费时自然无法保证顺序!

如果一定要保证生产-消费全链路消息有序,发送端需要同步发送,ack回调不能设置为0,且只能有一个分区,一个消费者进行消费,但这样明显有悖于kafka的高性能理论!可以考虑rabbitMQ其他消息中间件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章