2015-10-13 179 views
1

我在一個特定的主題中有多個消息(更具體地說是日誌消息),這些消息具有相同的消息塊ID(這些ID不斷變化,但對於某個消息塊保持不變),我需要找到一種組所有具有該ID的消息或共享消息組中所有消費者之間具有相同ID的消息中包含的數據。 那麼有什麼方法可以在消費者羣體中的各種消費者之間共享數據?Kafka:消費者羣體中的消費者可以共享數據嗎?

回答

0

這聽起來像是一個會話用例。 Kafka沒有提供任何將消息分組或嵌套在一起的方法,因此您必須通過在處理消息的同時保持狀態並使用某種標頭來包裝消息組來實現這一點。然後,您可以將其推送到包裹消息組的新主題。

更好的方法可能是利用外部數據庫或其他系統,以更靈活的方式選擇或組織基於字段的數據。有關使用Spark streaming + HBase的示例,您可以查看this blogpost

0

有兩種方法可以做到這一點。

  1. 當您發佈消息本身時,使用分區鍵創建一條消息,因此所有具有相同id的消息都轉到單個分區。那麼在消費方面,它總是會被接收者接收。[https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+Producer+Example]

  2. 如果您使用的火花流在消費者方面,你可以使用滑動窗口的概念將所有相同的ID消息。[http://spark.apache.org/docs/latest/streaming-programming-guide.html#window-operations]