コマンド/イベントメッセージに関するメタデータをcqrsソリューションにどのように組み込んでいるかを知りたいと思います。たとえば、誰が、いつ、どのホストなどがコマンドを生成したかを知りたいです。これらをメッセージ自体に入れたくありません。
Webアプリで、ユーザーがショッピングカートを作成したとしますCreateShoppingCart { CartID, UserID }
。次に、それにアイテムを追加しましたAddItem { CartID, ItemID, Amount, etc }
。使用者が「カートに追加」ボタンをクリックしたときに正確に記録したい。
- これをいくつかの
Dictionary<string, object> Headers { get; set; }
プロパティに追加できます。そのプロパティはBaseMessageクラスにある可能性があります。 - メッセージングフレームワーク(NServiceBusなど)に依存して、このデータをメッセージコンテキストのメッセージヘッダーに追加できます。
- この情報については、別のコマンドを送信してください。のようなもの
LogCommandDetails { CommandID: 'id of AddItem command', DateTime, Some other meta data }
。このコマンドが処理されると、ItemAddedイベントのプロジェクションを更新し、このデータをプロジェクションに追加できます。
あなたの考えは何ですか?
ありがとう