これは境界付けられたコンテキストの完璧な例です。
同じまたはビジネス プロセス ステップを表す別のシステム (または境界付けられたコンテキスト) で発生したイベントは、受信側システムで発生したイベントとして扱われるべきではありません。
花屋システムの借方イベントは、財務追跡システムで発生した借方イベントとは異なる構造を持つ場合があります。
これを解決するには、フローリスト システムのイベントをリッスンするエンドポイントを用意し、そこからイベントの情報に基づいて財務追跡システムにコマンドを発行させ、必要に応じて財務追跡システムの情報と組み合わせることができます。これが発生する場所は、Finance Tracking System のクライアント、または「ドメイン サービス」と考えることができます。
この特定のケースでは、フローリスト システムからのイベントに、フローリスト システムで発生したトランザクションの情報が含まれています (境界付けられたコンテキスト)。ドメイン サービスで決定を下すことはありませんが、Finance Tracking System ドメインにコマンドを発行し、そこで決定が行われ、Finance Tracking System イベントが発行される可能性があります。花屋システム イベントが財務追跡システムで不正な形式で表示された場合、要求/応答または Ack/Nack の方法で花屋システムにそのことを伝えたくないでしょう。イベントは花屋から発行されたものであり、そのようなものを実装すると、メッセージング パターンが壊れてしまいます。メッセージング インフラストラクチャでは、メッセージを再試行したり、受信コードを修正して新しいコードでメッセージを再試行したりできる必要があります。
ただし、Florist の境界コンテキストと通信する必要がある場合は、Florist システムで Finance Tracking System からのイベントをサブスクライブして、トランザクションが正常に処理されたかどうかを調べることができます。これは、トランザクションが発生するかどうかをメイン システムが判断する場合にのみ必要です。
Finance Tracking System はトランザクション ログのようなものであり、Florist イベントを Finance Tracking System イベントとして扱わないことだけを説明している場合。Finance Tracking System イベントを発生させるコマンドを発行する間に何かを挿入します。
編集:
あなたの編集への応答として。受信コンポーネントは、Finance Tracking System ドメインにコマンドを送信する必要があります。これにより、(通常どおり) イベントが発行されます。