1. 程式人生 > >Kafka訊息順序保證

Kafka訊息順序保證

Kafka可以保證同一個分割槽裡的訊息是有序的。生產者按照一定的順序傳送訊息,broker會按照這個順序將訊息寫入分割槽的批次快取中,消費者也會按照同樣的順序讀取它們。

如果把retries設定為非零整數,同時把max.in.flight.requests.per.connection設定為大於1的整數,那麼,如果第一個批次寫入訊息失敗,而第二個批次寫入訊息成功,broker會重試寫入第一個批次。如果此時第一個批次也寫入成功,那麼這兩個批次的順序就會跟生產者傳送的順序相反。如果對訊息寫入順序有要求,那麼可以把max.in.flight.requests.per.connection設定為1,這樣生產者在嘗試傳送第一個批次的訊息時,就不會有其他的訊息傳送給broker,但是吞吐量會下降。

max.in.flight.requests.per.connection:該引數指定了生產者在收到伺服器響應之前可以傳送多少批次的訊息。它的值越高,佔用的記憶體越多,不過也會提高吞吐量。