3

アプリケーションからエージェントのプールを管理する必要があります。すべて Java で記述されていますが、エージェントは独自の JVM で実行する必要があります。サブプロセスを開始し、stdout/stdin を使用してコマンドとキープアライブ情報を送信する概念実証を作成しました。データ転送用のソケット接続も開きます。

いくつかの接続プーリング ライブラリがエージェントの管理に役立つはずだと思います。

エージェントとメイン プロセス間の通信についてはどうでしょうか。XML メッセージ (JAXB) で TCP を使用することは、私が望むほど信頼性も利便性も高くありません。ここで役立つより良いライブラリの提案はありますか?

私は自分で必要なものをうまく書くことができましたが、他の人がすでにその方法でうまくやっていると確信しています.

4

3 に答える 3

1

メッセージングについては、 ZeroMQのようなものを試すことができます。これはメッセージングツールであり、プロセス間の通信用のローカルトランスポートを備えているため、プロセス間でオブジェクトをシリアル化できます。

別の方法は、おそらく最も単純な従来の rmi に戻ることです。

于 2010-07-22T05:05:34.700 に答える
0

これを開発したときに非常に役立つ2つの方法を実際に見つけました。

  1. WebSocket。私は単純なソケットを使用しましたが、送信者と送信完了を確認するためにシグナリングを再発明する必要がありました。私は行ベースのアプローチを使用しましたが、それは本当に醜いです。WebSocket はメッセージベースの通信を提供します。これは素晴らしいことです。
  2. ヘーゼルキャスト。これは「分散システム」であり、分散エグゼキューター (メッセージをアプリケーション サーバーに送信するようにスケジュールし、使用可能な jvm 以外のエージェントにアトミックに処理させる)、共有およびスレッド セーフなハッシュマップ (保持するため) などの優れた機能を提供します。私が見た同様のツールの多くは、ネイティブ コード (ZeroMQ など) または CPU ごとのライセンスなどでした。Hazelcast はコミュニティ エディションであり、アプリにバンドルできます。

実際、私は vert.x を使用して websocket ベースの通信を処理し始め、それ自体が hazelcast を使用していることに気付きました。

于 2012-11-20T10:26:30.407 に答える
0

ヘシアンを試すことができます:

http://hessian.caucho.com/

またはプレオン:

http://preon.sourceforge.net/

于 2010-07-21T23:10:48.450 に答える