2

私のJavaアプリケーションはサーバーからデータをフェッチする必要があります(nginxでCakePHPを実行しています)。サーバーをポーリングせずにデータをフェッチする別の方法はありますか?現在、永続的なHTTP接続とポーリングサーバーをX秒ごとに使用して、データが利用可能かどうかを確認しています。

Webブラウザーであれば、Webソケットを使用できたはずです。Javaにはどのようなオプションがありますか?

4

3 に答える 3

0

アプリケーションのデータは頻繁に変更されますか?もしそうなら、ポーリングは更新を取得するための最良の、そして最も簡単な方法かもしれません。

そうでない場合は、Webソケット機能を自分で構築する必要があります。Javaクライアントに特定のポートをリッスンする「サーバー」を用意します。リクエストを送信するときは、CakePHPにログを記録させ、更新されるたびにデータを送信するcronジョブなどを用意します。

ただし、ファイアウォール/ NATの背後にいる場合、これを機能させるのは困難です。試してみることができますが、HTTPサーバーのポーリングが最も簡単だと思います。

于 2012-06-26T20:48:44.577 に答える
0

ActiveMQ、RabbitMQ、WebsphereMQなどのようなJavaメッセージングシステム(JMS)を実装できる場合は、クライアントに投稿されたメッセージをリッスンできます。もちろん、Javaアプリケーションは依然として効果的にメッセージをポーリングしますが、パフォーマンスはHTTP要求よりもはるかに優れています。

Springフレームワークは、JMS実装に対していくつかの優れた抽象化を提供するため、配管について心配する必要はありません。単純なJmsTemplateを使用するか、 SpringIntegrationを2つのオプションとして使用できます。

于 2012-06-26T21:16:00.537 に答える
0

WebSphereMQのテレメトリ機能により、MQTTクライアントはMQTTチャネルに接続できます。サーバーで実行されているMQTTアプリは、変更に応じてデータを公開でき、データは適切なトピックにサブスクライブしているリモートJMSまたはMQTTクライアントにプッシュされます。ポーリングは含まれません。

于 2014-04-06T16:57:56.320 に答える