BizTalk:按给定顺序处理不相关的消息

时间:2016-04-15 11:32:13

标签: design-patterns process biztalk

我正在接收来自外部系统的消息 有三种消息类型,每种类型代表一种实体,每条消息都包含一个动词(创建,更新,删除)
这表示如下。

实体A(CUD)
实体B(CUD)
实体C(U)

实体B与实体A有关系,这意味着必须在创建/更新实体B之前创建实体A. Enitity C与实体B有关系,这意味着必须在实体C更新之前创建实体B.

这些消息将用于更新另外两个外部系统 可以无序地接收消息,这意味着可以在实体A之前接收实体B.

我正在努力寻找一个好的模式,以确保以正确的顺序处理邮件实体 如果可能的话,我宁愿不使用数据库或文件系统 关于如何解决这个问题的任何建议都非常受欢迎。

1 个答案:

答案 0 :(得分:4)

首先,推回源系统。如果消息有真正的订单,那么他们真的需要支持。如果他们无法拒绝或拒绝,那么您应该注意通知您的管理层您必须花费额外的时间来满足他们对业务要求的不合规性。

话虽如此,您可以使用并行车队实现此目的,只要有明确的方式来关联传入的消息,AccountID或其他一些。

即使B或C激活Convoy Orchestration,它也会等待A继续处理。然后,您可以按任何顺序处理邮件。

要记住的一件事是,你应该将每个接收形状放在一个带有超时的范围内,否则,A或B / C会丢失',Orchestration将永远等待。如果超时触发,您可以发送警报。

这是一个平行车队的例子:Parallel Convoy in BizTalk example

您可以通过Bing或Google找到许多其他内容。