2016-03-23 3 views
1

現在私のアプリケーションでは、いくつかの情報を表示するコンポーネントがあります。 1分ごとにcsvファイルを含むサーバーとjettyを使用して通信し、変更されたかどうかを確認します。私はこのソリューションを改善し、csvファイルが変更されたときに即座にコンポーネントを更新する可能性を持っています。Apache Camelを使用してサーバープッシュを実装することは可能ですか?

私はApache Camelの使用を検討します。変更についてのプッシュを受け取った後、システムの別の部分にも送付したいと思います。 RMIを使用します。 Apache Camelのドキュメントを読みましたが、コンポーネント間でデータを受信、処理、送信するのは簡単ですが、通知を待つことができるかどうかはわかりません。 私はラクダ以外のものについて考えるべきでしょうか?

ご協力いただきありがとうございます。ありがとう。

+0

MQTTを使用して、クライアントをサーバー・トピックにサブミットします。他にもオプションがあります。 – Namphibian

+0

Camelには使いやすいMQTTコンポーネントがあります。 – Namphibian

答えて

0

Camelは、サーバープッシュからの非同期呼び出しを処理するのに適しています。サーバが更新されたcsvファイルをどのように送信するかによって、それに応じて残りのプロセスがトリガされます。たとえば、エンドポイントに常にファイルドロップをリスンすることができます。新しいcsvファイルがディレクトリに表示されると、残りのプロセスが自動的にトリガーされます。また、Webサービス呼び出しでこれを行うことも、どこかのキューから情報を引き出すこともできます。

UPDATE:私はここに私の考えを終了しますので、

私は以下のコメント内の文字を使い果たしました。サーバープッシュ方式では、ファイルが変更されたかどうかを確認するために高価なWeb呼び出しを行うことはありません。あなたは、サーバーからの刺激を待つリスナーを実装します。私が提案した方法の1つは、サーバーにファイルを(FTPなどを使用して)プッシュして、ラクダエンドポイントがそれを聞くことでした。自然状態では、ラクダエンドポイントはポーリングしていますが、Web呼び出しを行う代わりにローカルディレクトリをポーリングするだけなので、このポーリングはコストがかかりません。私はサーバーのプッシュに対してどれだけのコントロールを持っているのか分かりませんが、本当に非同期にコールしたい場合は、公開するSOAP/RESTエンドポイントを呼び出すWebサービスの形式でサーバーをプッシュすることができます。そのwebserviceコールは、ゼロポーリングで必要な残りのルート/プロセスを起動します。

+0

私の質問は、Apache Camelや他のライブラリで「ファイルドロップを絶えず聞いているエンドポイント」をどのように実装すればよいですか? –

+0

@Peters_、それは[ファイルコンポーネント](http://camel.apache.org/file2.html)が行うことができるポーリングですが、あなたの質問ではプッシュソリューションを求めています。 – Ralf

+0

はい、私はポーリングではなく、プッシュソリューションを探しています。実際には、csvファイルを持つ私のサーバーではありません。だから私は今更新が来るときではない。 –

関連する問題