从saga访问不同的有界上下文数据

时间:2012-08-29 07:57:50

标签: domain-driven-design nservicebus saga bounded-contexts

我创建了一个带有NServiceBus的传奇,它为客户的信息请求外部服务并使其超时。超时到期后,传奇检查外部服务是否有响应。作为回应,我有相应客户的数据,现在我有一些情况,我必须检查我们的系统中是否存在相应的客户(如果他不存在 - 我必须创建他)之后我必须创建一些额外的审计实体来引用客户(如果我有所有需要的信息来创建它们)。

我想知道我应该如何检查特定客户是否存在以及何时不存在如何创建他。

到目前为止,我有一些想法:

  • 从消息处理程序内部调用WCF服务(检查,创建)

  • 通过NSB向客户有界上下文发送消息,并等待带有ID的响应。

1 个答案:

答案 0 :(得分:3)

您可以利用NServiceBus消息处理管道。让“客户服务”中的处理程序配置为首先运行,检查客户是否存在并在必要时创建它们,最后在正在处理的原始消息上设置CustomerID属性,以便下一个处理程序知道它是什么。

这为您提供了整个过程中事务一致性的好处。

您描述的发布/订阅模型也可以使用。我不喜欢它,因为你会对事件发出一种请求/响应,并且不清楚谁真正对客户信息负责(因为所需的数据来自不负责顾客)。

如果不深入您的领域,很难更具说明性。