0

私は自分のプロジェクトでApache Kafkaを使用しましたが、プロジェクトの一部である反応ネイティブのアプリケーションの中に統合する必要があります。基本的に私のサーバーはKafkaのプロデューサーであり、アプリケーションはトピックを聞き取り消費者になる必要があります。私のReact-NativeアプリでApache Kafkaを使用する必要があります

まず、このnpmパッケージを試しました。 https://github.com/SOHU-Co/kafka-node
しかし、このパッケージは、React Nativeバンドルの一部ではないnodejのコアモジュールに依存しています。 React Nativeアプリの中でKafkaを使用してコミュニケーションをとれるような方法はありますか? ありがとう!

答えて

0

お試しDeepstreamIO

これは、React-NativeとKafkaの両方にうまく統合されたリアルタイムソケットサーバーです。メッセージ・ブローカとしてKafkaを使用して、配布されたDeepstreamノード間でメッセージをやりとりし、メッセージを他の加入クライアントにプッシュできます。それらはオープンソースなので、特定のニーズに合わせてコネクタを設定できます。

+0

うわー!私はあなたのコメントを読んだだけです。私はまったく同じことをやっていて、まったく同じ解決策に従ったと言わなければなりません。それは魅力的に機能しました。私がDeepstreamについて好きでなかった唯一のものは、カフカにあるコミットの非持続性でした。とにかくこの答えを正しいとマークしてください。 –

0

簡単な解決策は、カフカクラスターを単純なREST APIの後ろに置くことです。 kafka-restのようなライブラリを使用すると、組み込みのfetch機能を使用してReact Nativeアプリを簡単に接続できます。さらに進んで、kafka-rest-nodeクライアントをあなたのReact Nativeアプリに統合しようと考えています。レポの大まかな概要は、コアのノード依存関係には至りません。

「ライブ」アップデートを可能にするもう1つの方法は、KafkaストリームをWebSocket接続に変換するWebサーバーの後ろにKafkaを置くことです。 kafka-websocketのようなライブラリはクライアントの消費と生産の両方を可能にしますが、Microsoftのkafka-proxy-wsのようなもっと単純なライブラリはメッセージを消費するだけです。

モバイルクライアントは常にストリーミングデータでうまくいくとは限らないことに注意してください。さまざまな不確定なネットワーク状況(遅延、信号の欠落など)でWebSocketベースの実装をテストすることをお勧めします。

+0

返信いただきありがとうございます!これは確かにKafkaのRESTラッパーで実行できます。しかし、その場合でも、私は常に、反応しているネイティブアプリからRestラッパーサーバーへのRest Callを作成しておく必要があります。 (またはポーリングと言うこともできます)しかし、これはPub/Subアーキテクチャが存在しないためカフカの目的を上回ります。私は、私のアプリが別のリクエストを続けて欲しいとは思わない。 'kafka-rest-node'は' kafka-native'を内部的に使用していますので、使用することはできません。 –

+0

@MustansirZia私はあなたの懸念を反映するために答えを更新しました。 – jumploops

+0

ありがとうございます!間にブローカーを置くことは、あまりにも多くの作業と不必要な複雑さでした。私はDeepStreamに行きました。私のニーズにうまく対応していたからです。 –

関連する問題