2017-08-29 10 views
2

当社のサーバーでは、関連するJava Springアプリケーションがいくつも実行されています。それらをApp1、App2と呼ぶことができます& App3。これらのアプリケーション(App1、App2 & App3)は、これらのアプリケーションを1つ以上のリモートリスナーにブロードキャストしたいと考えています。例えば、 App1:ファイルabcの読み込みに失敗しました。 App2:ヒープスペースの90%以上を使用しています。JMX Notifications design

これらのイベントのリスナーは、受信した通知に基づいてサポートやクライアントに電子メールを送信するなどの特定の処理を行います。

私が考えることができる最良の解決策は、NotificationSender JMXをour-common-utils.jarに有効化(NotificationBroadcasterSupportを実装)させることです。これは、通知のキューからスレッドを消費し、各通知のリスナーにsendNotification()を起動します。これはエコシステムの各アプリケーションで行われますが、common-utilsの共通コードを使用します。

このデザインに欠陥がありますか?より効率的な方法/それを行うためのフレームワークですか?

多くの感謝:)

答えて

1

代替ソリューションは、例えば任意の分散コーディネーションサービスzookeeperを使用することです。私は最初のマイクロサービスプロジェクトでそれを使用しました。私が見る通り、springを使用しています。 Springクラウドは、宣言的な方法で使用できる必要なソリューションを提供します。私は@FeignClientにあなたの注意を払うでしょう。それは非常に使いやすく、フレキシブルな世界でspringです。

私はこの問題を今作業する場合、spring hystrixベースのソリューションを使用します。あなたのJavaサービス間の統合を簡素化するために、私はservice-registration-and-discoveryをチェックすることをお勧めします。


springは、あなたのプロジェクトで一般的なエンジンの一部でない場合(あなたが他のベンダーのソリューションを必要とすることができる、代替が多い)私の意見を無視します。私は春のソリューションに注目しています。私のプロジェクトでは春が制限されていないので、妥当であれば私が望むものを使用できます。