Java EE を使用した全二重ストリーミング ソリューションを探しています。
状況: クライアント アプリケーション (JavaFX) が周辺機器からデータを読み取ります。このデータは、処理のためにほぼリアルタイムでサーバーに転送され、処理のために新しいデータを送信し続けている間、非同期で応答を返す必要があります。
サーバーとの通信では、オーバーヘッドをできるだけ低くする必要があります。受信するデータは、基本的にセンサー データであり、処理後、一連のコマンドとして記述できるものに変換されます。
私が調べたこと:
- TCP/IP サーバー (これは非 Java EE アプローチです)。これは明らかな解決策です。各クライアント アプリから 2 つの接続が同時に開かれました。1 つはアップストリーム データ用で、もう 1 つはダウンストリーム データ用です。
- リモート & ステートレス EJB。これは、ストリーミングが含まれていないことを意味し、センサー データを小さなウィンドウ (1 ~ 2 秒相当のセンサー データ) にパックしてから、サーバーに送信して処理し、処理結果を応答として取得することを意味します。このアプローチでは、スケーラブルではありますが、1 ~ 2 秒ごとにリクエストを行う必要があることを考えると、どれくらい速くなるかわかりません。私はまだこれをテストする必要がありますが、疑問があります。
- RMI。これは、技術的に EJB と何か違いはありますか?
- ロング ポーリングの 2 つのサーブレット (アップ/ダウン)。私はこれを行ったことがないので、テストする必要があります。
とりあえず、アプローチ 2 のパフォーマンスをテストしたいと思います。最初の解決策は確実に機能しますが、別のサーバー (既に何かを実行している Tomcat の隣) を持つことはあまり好きではありません。
ただし、それまでの間、これを簡単に解決できる Java 固有の (EE であるかどうかに関係なく) テクノロジが他にあるかどうかを知っておく価値があります。誰かがアイデアを持っている場合は、それを共有してください。