0

我需要處理產品ID的順序,並計劃使用卡夫卡爲此,現在如果數據丟失從卡夫卡或我的代碼我有所有這些產品ID在可能數據庫,如果記錄沒有在給定的時間內處理可以說24小時我需要重新發布他們在一個隊列中,但優先考慮,因爲kafka沒有隊列中的數據的優先概念我可以有另一個隊列,可以充當優先隊列。卡夫卡的數據排序主要和優先隊列

我面臨的問題是我需要在優先隊列中排序產品。因此,如果我已經在基於散列的分區中進行分發,並且我的客戶再次處理消息,即爲消費者中的每個線程維護隊列,並基於產品ID的散列,我可以主要在內存隊列中分配這些數據。但是在2個隊列的情況下,1作爲主隊列和1個優先級,我也在這些隊列中排序。所以來自兩個隊列的數據都應該發給同一個消費者,以便我可以在代碼中維護排序。

請建議如果我在錯誤的軌道上,或者我應該如何繼續。

回答

0

如果您需要,可以完成。如果您有合理的保留策略和複製因子,您不會丟失kafka中的數據。


還是如何做到這一點:

1.設置:

您可以有兩個主題。讓我們稱他們爲正常和優先。你必須在這兩個分區相同數量的,讓我們4.你有兩個相同的分區策略,讓說產品編號MOD 4.

2.Producer:

現在你有一個事件你它的產品id爲3.它被髮送到正常的主題分區3.你不會因爲任何原因收到它。您現在使用相同的邏輯重新發布有關同一產品的優先級主題事件,以便它進入同一分區。

3.Consumer:

在您必須手動分配給特定的分區消費者身邊。假設你有兩個消費者。您只需爲這兩個主題分配第一個分區0和1(並聽取兩個主題)。第二個分配剩餘的兩個分區2和3.

我希望這可以回答你的問題。祝你好運!