2017-01-05 19 views
-2

私は2つのjavaプロセスを持っていますが、Process1は外部データをデータベースにインポートする責任があり、Process2は同じデータベースを使用して残りのアプリケーションを実行しています。 Process1は通常、1日に1回データをインポートします。2つの異なるJavaプロセス間で通信する

私が必要とするのは、Process1が作業を終了したときにProcess2に通知して後続のタスクを実行できるようにすることです。つまり、これはお互いの相互作用の限界になります。後に他のデータを共有する必要はありません。

ありませんが、私は、次のいずれかの方法でこれを行うことができます知っている:

  1. プロセス1は、それがその実行を終了したときに、データベース内のエントリを書いて、そのために探しているプロセス2で悪魔のスレッドを持っている持っていますエントリ。このエントリを読み終えたら、Process2でタスクを完了します。これは既存のエコシステムで実装するのが最も簡単かもしれませんが、1つの通知のためにデータベースをスレッドループさせるのは一見醜いと思われます。ただし、インポートジョブが開始されたときにのみスレッドを開始し、通知を受け取った後でスレッドを終了することで最適化できます。

  2. ソケットを使用してください。私は以前はソケットで作業したことがないので、興味深い学習曲線かもしれません。しかし私の最初の読書の後、私は恐ろしいかもしれません。

  3. 使用RMI

私は同様の問題に取り組んできた人たちから聞きたい、と何のアプローチ彼らが選択して、なぜ、また私の問題の適切な解決策がどうなるかを知っていただきたいと思います。

編集。 私はthisを調べましたが、プロセス間通信のスターターには基本的な例がありません。それは私がこのポストで見ているものです。

+0

[2つのJVMが互いに話す方法]の可能な複製(http://stackoverflow.com/questions/10942427/how-to-have-2-jvms-talk-to-one-another) – AntonH

+0

またはGoogleの「Javaプロセス間通信」を検索するだけです。 – AntonH

+0

@AntonHあなたがその記事で見たように私は研究をしました。私は、私が直面している状況において、より適切なものが何かを知りたいと思います。そして、私はすでにリンクを通過しました。 – rd22

答えて

0

私はそれはmemory mapped fileを使用し、オフヒープデータを保存しChronicle-Queue

見(GCとそう問題はない)を取ると言うでしょう。また、failoverシナリオでTCP複製を提供します。

複数のマシンが利用可能な場合、分散処理をサポートします。

関連する問題