kafka順序消費消息的情況

由於生產者發送到多個分區的消息分發策略默認情況下kafka 採用的是 hash 取模的分區算法,無法保證所有消息在多個分區內同時消費時按照寫入前的順序消費。

如果發送端配置了重試機制,kafka不會等之前那條消息完全發送成功纔去發送下一條消息,這樣可能會出現:發送了1,2,3條消息,第一條超時了,後面兩條發送成功,再重試發送第1條消息,這時消息在broker端的順序就是2,3,1了。發送端消息發送已經亂序,到了消費端消費時自然無法保證順序!

如果一定要保證生產-消費全鏈路消息有序,發送端需要同步發送,ack回調不能設置爲0,且只能有一個分區,一個消費者進行消費,但這樣明顯有悖於kafka的高性能理論!可以考慮rabbitMQ其他消息中間件。

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