2017-07-12 35 views
0

隨着Kafka 0.11.0.0的最後一個版本,Apache團隊正在引入冪等生產者和交易。 是否有可能保證我們想要記錄的整組消息(例如100萬)只會在最後被提交? 我想說的是,如果生產者與經紀商之間的聯繫鬆動並且無法使其穩定下來,消費者就不會看到消息。可能嗎?保證卡夫卡生產商獨特的全球交易

回答

2

是的,您可以使用生產者中的交易。您開始一個交易,發佈您的所有消息,然後提交交易。所有消息都一次寫入Kafka,但消費者在新的READ_COMMITTED模式下只能看到生產者提交事務後的消息,並將特殊事務標記添加到Kafka提交日誌中。

未處於READ_COMMITTED模式的消費者即使尚未提交(或曾經)提交過,也可以單獨編寫消息。

打開的事務可以保持未提交的時間有多長,所以最終如果生產者死亡並且沒有明確地結束事務,它將超時和回滾,READ_COMMITTED使用者將永遠不會看到這些消息。

+0

這是我可以保證每個製片人的東西,對吧?如果想要使用3個生產者進行並行化,我無法保證全球單一交易...是否正確? – rh0x

+1

正確。每個生產者,而不是全球 –