1

我有一个不寻常的问题——我有两个单例编排,我们称它们为 Singleton-A 和 Singleton-B。

Singleton-A 组装 Message-A 类型的消息,并通过直接绑定的编排端口将其发送到消息框。因为它是一个单例,所以它必须只在一个主机实例上运行。因此,每个 Message-A 都会以正确的顺序 1、2、3、4 等发送到消息框。我可以通过使用 HAT 来确认这是真的。

Singleton-B 订阅了 Message-A。Singleton-B 有一个逻辑接收端口,它通过它接收来自 Singleton-A 的消息。此接收端口已将 order 传递设置为 true。Singleton-B 当然也是单线程的。但是,当 Singleton-A 发送的消息被 Singleton-B 消费时,它们以错误的顺序 1、2、4、3... 等消费。再次查看 HAT,我可以看到这是真的。

Singleton-B 处理消息的顺序似乎完全不确定。这里发生了什么?订阅评估和/或主机队列排队过程是多线程的吗?假设 BizTalk 不支持单例业务流程之间的有序传递是否公平?

4

1 回答 1

1

这仍然是一个悬而未决的问题 - 我相信这是 BizTalk 中的一个错误。然而,我们重新设计了我们的解决方案,使单例编排永远不会直接绑定到其他单例编排的输出。

顺便说一句,这首先是一个糟糕的设计,因为 BizTalk 主要是为大容量、并行消息处理而设计的。

于 2013-01-05T14:24:17.137 回答