私はそれにまっすぐにカットします。銀行に送信されたファイルを介して、クレジット カードの支払いを自動化しようとしています。カードの支払いは、銀行でリアルタイムに検証されません。銀行は夜通し支払いを処理し、翌日、成功した支払いと失敗した支払いの両方を含む応答ファイルを送信します。
支払いを受け入れるかキャンセルすると、支払い/キャンセルの詳細を含むメッセージが (Bus.Send 経由で) コマンド メッセージ プロセッサに送信される Web アプリがあります。
次に、プロセッサは、すべてのサービスが参照できるようにこれを (Bus.Publish を介して) パブリッシュします。
1 つのサービスで次のことを行う必要があります。
- 最初のメッセージの受信で物語を開始する
- 営業終了のタイムアウト要求を発行する
- 後続のすべてのメッセージを (サガで) 受信したときに追跡します
- タイムアウトの受信時に、支払いとキャンセルのメッセージを銀行ファイルに変換します。
問題は、List<> が仮想メンバーとして許可されていないため、メッセージのコレクション (またはそれ以外のもの) をサガに格納する方法がわからないことです。
現在のサガ構造は次のとおりです。
public class PaymentRequestCancelledSagaBase : IContainSagaData
{
// the following properties are mandatory
public virtual Guid Id { get; set; }
public virtual string Originator { get; set; }
public virtual string OriginalMessageId { get; set; }
// List of all the received PaymentRequestedMessages
public virtual List<PaymentRequested> PaymentRequestedMessages;
// List of all the received PaymentCancelledMessages
public virtual List<PaymentCancelled> PaymentCancelledMessages;
}
何かご意見は?