0

我在我的項目中使用了Apache Kafka,並且需要將它集成到作爲項目一部分的react-native應用程序中。基本上,我的服務器是一個卡夫卡製作人,應用程序需要傾聽主題併成爲消費者。需要在我的React-Native應用程序中使用Apache Kafka

起初,我試着用這個npm包。 https://github.com/SOHU-Co/kafka-node
但是,此軟件包依賴於不屬於React Native軟件包的nodejs的核心模塊。有沒有其他方法可以在React Native應用程序中使用Kafka進行交流? 謝謝!

回答

0

嘗試DeepstreamIO

這是一個實時套接字服務器,與React-Native和Kafka很好地集成在一起。它可以使用Kafka作爲消息代理,在分佈式的Deepstream節點之間傳遞消息,並將消息推送到其他訂閱的客戶端。他們是開源的,所以你可以配置他們的連接器以滿足您的特定需求。

+0

哇!我剛剛讀了你的評論。我應該告訴你,我做了完全相同的事情,並遵循完全相同的解決方案。它像一個魅力一樣工作,我對Deepstream唯一不喜歡的地方就是在Kafka中沒有持續的提交。無論如何,標記這個答案是正確的。 –

0

快速解決方案是將Kafka集羣放在簡單的REST API後面。使用類似kafka-rest的庫可能是使用內置fetch函數連接React Native應用程序的簡單方法。您可以進一步嘗試將kafka-rest-node客戶端集成到您的React Native應用程序中;對回購的粗略概述不會導致任何核心節點依賴性。

另一種允許「實時」更新的方法可能包括將Kafka放置在將Kafka流轉換爲WebSocket連接的Web服務器後面。諸如kafka-websocket這樣的庫允許客戶端消費和生產,而像微軟的kafka-proxy-ws這樣更簡單的庫僅允許消費消息。

值得注意的是,移動客戶端並不總是適合流式傳輸數據,因此建議您在各種不確定的網絡條件(延遲,丟棄信號等)下測試基於WebSocket的實現。

+0

非常感謝回覆!對於Kafka來說,這當然是可行的。但是在這種情況下,我也需要不斷地從我的反應原生應用中繼續對Rest包裝服務器進行Rest調用。 (或者你可以說,投票)然而,這將會超過Kafka的目的,因爲不會有任何Pub/Sub架構。我不希望我的應用程序繼續提出一個接一個的請求。 'kafka-rest-node'在內部使用'kafka-native',所以我們也不能使用它。 –

+0

@MustansirZia我已經更新了答案,以反映您的擔憂。 – jumploops

+0

感謝您的關注!把一個經紀人介入他們之間只是太多的工作和不必要的複雜性。我去了DeepStream,因爲它只是爲了滿足我的需求。 –

相關問題