このシナリオでは、おそらく(一種のab-)ApacheServiceMixを使用します。メッセージ指向ミドルウェアを使用すると、プロジェクトにのみメリットがあります。
非常に高いレベルの視点から私のソリューションを説明する:
私の見方では、問題を少し抽象化すると、発生するイベントについて話します。これらのイベントは、(ビジネス)ルールに従って処理する必要があります。これらのビジネスルールに応じて、他の通信パートナーに同期的または非同期的に通知する必要があります。
そのため、イベントが発生したときに、さまざまなステーションがServiceMixのActiveMQコンポーネントにかなり単純なJMSメッセージを送信できます。次に、 ApacheCamelで実行されているビジネスロジックがそれらのメッセージを読み取り、処理します。Camelコンポーネントは、エンタープライズ統合パターン用の豊富な機能セットを提供します。ここでのビジネスロジックの実装は、かなり単純で簡単です。通知が必要なステーションは、ユースケースに応じて、JMSキューまたはトピックにサブスクライブするか、カスタムまたは多くの既存のコネクタとデータ形式の1つを介して同期的にサブスクライブできます。ヒント:プロトコルバッファの送信over JMSまたはAMQPは、比較的簡単にCまたはC++で実装できます。これにより、ステーションで非常に効率的なコードが可能になり、同時にJVMへの依存がなくなります。
ServiceMixセットアップを使用すると、さまざまな利点があります。
- 非同期通信にJMSを使用する場合の、イベントと計算データの両方に対する永続的な通知とサブスクリプション–適切に設定されていれば、イベントが失われることはありません。これは、RAMベースのソリューションの場合とは異なります。
- 戦闘テスト済みの環境で、すぐに使用できます
- メンテナンスの容易さ:アプリケーションが適切に計画されている場合、ビジネスロジックの更新は、ダウンタイムがほとんどない(数分の1秒)か、まったくない状態で展開できます。これは、ビジネスロジックがOSGiバンドルとして実装され、それらのバンドルの置き換えを適切に処理できるためです。
- 開発の容易さ:アプリケーション全体を開発する必要はなく、ビジネスロジック、つまりActiveMQとドメインモデルにメッセージを送信するソフトウェアを実装するだけで済みます。
- 既存のSOAへのシームレスな統合
- 設計上、複雑な問題はさまざまな小さな問題に分割されます。これにより、安定性が向上し、アジャイル開発手順と完全に一致する可能性があります。