2016-04-25 39 views
0

我使用Apache Kafka作爲我的Storm噴頭。 我收到來自卡夫卡的消息,處理這些消息,並將它們發送回卡夫卡。在使用Storm重現信息後,通過卡夫卡保留訂單

我在想我是否可以保持消息的順序相同。即

topic01:A,B,C - >風暴 - > topic02:A_,B_,C_

我用一個口和一個螺栓,以儘量保持秩序,但它不會工作。 我也嘗試過OpaqueTridentKafkaSpout,但順序仍然改變。

那麼有沒有解決方案來解決這個問題? 謝謝。

回答

0

卡夫卡只保證在分區內訂購。如果您在分區ID上使用fieldsGrouping並將結果寫入結果主題的相同分區,則可以在Storm中爲每個分區保留此順序。

+0

是的!如果我將分區數更改爲1,我可以保留該順序。我應該如何在我的卡夫卡噴嘴中獲得分區ID? –

+0

我調查了一下'KafkaSpout'的代碼。它在內部使用變量'_currPartitionIndex' - 我想你需要修補'KafkaSpout'來訪問這些信息。沒有API可以訪問它。 –