0

現在のアーキテクチャの代替として、アプリケーションでのエンタープライズ統合パターンの使用を調査していますが、システムでの使用方法が不明な状況があります。(使用する EIP の実装に関係なく。)

私たちが持っているのは、ケースごとにさまざまな種類のメッセージを受信するシステムです (メッセージ タイプ A、B (MT-A、MT-B) とマークします)。メッセージごとに、Web サービスやファイル プロトコルの種類などを通じて、さまざまな外部システム (約 15 のシステム) を呼び出しています。このデータはすべてドメイン モデルに変換され、データベースに保存されます (正規ドメイン モデルとしましょう)。 (CDM))。

  1. 最初の問題は、メッセージ (MT-A) を受信したときに、メッセージのデータを使用して Web サービスを呼び出したいことです。次のいくつかの手順で、応答を処理します (変換を行い、DB に保存するなど)。しかし、その後、元のメッセージの処理を続行し、そこからのデータを使用して他のシステムを呼び出したいと考えています。しかし、プロセス フローのメッセージ ペイロードとして、Web サービスからの応答があります。外部システムを呼び出す前に、最初に使用していた元のメッセージを取り戻すための最良の方法は何ですか? (これにはメッセージストアを使用する必要があります。また、元のメッセージをヘッダーに入れるための非常に醜い回避策としてどこかで見ました。)

  2. いくつかのメッセージを受け取ったとしましょう。それらからのデータと外部システムからのデータが現在データベース/CDM にあります。次に、他の種類のシステムを呼び出しているメッセージ MT-B を受け取りますが、呼び出しには、受信したメッセージからのデータと、前のプロセスからのデータベース/CDM からのデータが必要です。では、そのデータをどのように取得すればよいでしょうか。だから私は2つの解決策を考えていました:

    2.1. 最初のステップとして、受信したメッセージを CDM に統合すると、プロセス内のメッセージのペイロードが CDM 全体になるため、必要なものはすべて手元にあります。(これはポイント1も解決します。)

    2.2. このメッセージが関連するヘッダーにケース ID を入れます。CDM からのデータが必要な場合に備えて、外部システムを呼び出しているサービスまたはエンドポイント内でクエリを実行します。

したがって、これらのソリューションのどれがそのような状況に適しているか、おそらく他のソリューションが適しています。あるいは、私は ESB を明確に見ていないか、理解していないだけかもしれません。私はこのトピックにまったく慣れていません。注: ここでは、Canonical Domain Model を、必要なすべてのデータがあるデータベースに格納されたアプリケーションの一般的なドメイン モデルとして理解しています。(メッセージからも外部システム)

ありがとうございました。

4

1 に答える 1

2

あなたが求めていることは、メッセージングアーキテクチャに適しています。そして、ええと、どのツールがあなたにとってより良いかは、聖戦を生み出すかもしれない問題です. もちろん、Spring Itegration の開発者である私は、私の「子供」を守ります。反対側から見ると、Apache Camel はほとんど同じことを行いますが、少し異なります...どのツールを選択するかはあなた次第です。最初からEIP Bookを読むことをお勧めします。また、パターンに注意してください:アグリゲーター、Claim-Ckeck、コンテンツ エンリッチャー、メッセージ ストア

Spring Integration の場合より: Spring で書いた、Spring を使っている、Spring で使っている。したがって、この場合に必要なものはすべて、Spring だけです。;-) これが私たちの新しいアーキテクチャです: Spring IO Platform

また、他の意見もいただけると嬉しいです!

于 2013-09-12T14:20:57.783 に答える