我会直接切入。我正在尝试通过发送给我们银行的文件自动执行信用卡付款。银行卡付款未实时验证。银行在一夜之间处理付款,并在第二天发送一个响应文件,其中包含成功和不成功的付款。
我有一个网络应用程序,当它接受或取消付款时,会(通过 Bus.Send)将包含付款/取消详细信息的消息发送到命令消息处理器。
然后处理器发布(通过 Bus.Publish)这个给所有服务看。
一项服务需要执行以下操作:
- 收到第一条消息后开始一个 saga
- 发出关闭业务的超时请求
- 跟踪所有后续消息(在 saga 中)
- 收到超时后,将付款和取消消息转入银行文件。
问题是我不知道如何在 saga 中存储消息集合(或其他任何内容),因为 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;
}
有什么想法吗?