デザイン放送メッセージクライアントに
A Serverエージェントは、任意のスケジュールの変更および/またはクライアントエージェントに必要な設定があるかどうかを見つけるためにポーリングDB(SQL Server 2012の)を続けています。クライアントエージェントはネットワーク上のすべてのマシン上で実行され、更新されたスキャンスケジュールと構成をサーバーエージェントから取得し、そのジョブスケジューラを更新する必要があります。サーバーエージェントとクライアントエージェントの両方がJavaで構築されています。 DBが更新されると
問題に関する声明
Serverは、クライアントエージェントのn個の数にデータを送信します。
ソリューション1
サーバとクライアントエージェントのWebサービスを作成し、お互いを消費します。 DBのスキャンスケジュールや設定に変更があると、サーバはクライアントエージェントのメソッドを呼び出して設定ファイルを更新します。
デメリットソリューション1
実行可能JARには、すべてのクライアントエージェント上のAxis2 /突堤/類似webserrverを展開。これが150000まで増えることができるすべてのクライアントエージェントにウェブサーバを配備していることを考えると、それはお勧めですか?また、すべてのクライアントマシンにWebサーバーがある場合、アプリケーションはセキュリティ証明書をクリアできますか?
対処方法2
サーバとクライアント間の通信にRMIを使用してください。このシナリオでは、クライアントはRMI通信が一方向であるため、ポーリングサーバーを保持します。双方向呼び出しの使用は、各クライアントマシンにサーバーソケットが含まれているので、避けてください。
デメリット対処方法2
DBが更新されるたびに、それが直接、すべてのクライアントマシンにメッセージを送信傾けます。それはクライアントマシンがそれをポーリングするのを待つ必要があります。即時スキャンが必要な場合は、すべてのクライアントエージェントが頻繁にマスターエージェントをポーリングする必要があります。これは、クライアントエージェントの数が膨大になる可能性を考慮してお勧めですか? Javaアーキテクトのもう一つの欠点は、RMIがWebサービスよりも遅いことです。あれは正しいですか?
私はこれらの2つのソリューションのいずれかに行く必要がありますか、またはあなたが私に与えることができる任意の3番目のソリューションがある場合。 1人はJMSを放送方法として提案しました。
私たちのアーキテクトチームはWebserviceをServerエージェント上に持つというソリューションを思いつき、すべてのClientエージェントがPolling Serverエージェントを定期的に保持します。こうすることで、すべてのリモートエージェント上でWebサーバーを使用することを避けることができます。 JMSも考慮されました。これは最高のソリューションの1つです。しかし、このソリューションがプロジェクトのすべての要件を満たしていることを考慮すると、JMSは見落とされていました。あなたの答えをありがとう。それはもっと議論して分析するよう促しました。 –