我有一个不寻常的问题——我有两个单例编排,我们称它们为 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 不支持单例业务流程之间的有序传递是否公平?