我有一个不寻常的问题 - 我有两个单独的编排,让我们称它们为Singleton-A和Singleton-B。
Singleton-A汇编Message-A类型的消息,并通过直接绑定的业务流程端口将其发送到消息框。因为它是单例,所以它必须只在一个主机实例上运行。所以每个Message-A都以正确的顺序1,2,3,4 ......发送到消息框。我可以通过使用HAT来确认这是真的。
Singleton-B订阅了Message-A。 Singleton-B有一个逻辑接收端口,通过它接收来自Singleton-A的消息。此接收端口已将订购的交付设置为true。 Singleton-B当然也是单线程的。但是当Singleton-A发送的消息被Singleton-B消耗时,它们会以错误的顺序被消耗1,2,4,3 ......等。再次查看HAT我可以看到这是真的。
Singleton-B处理消息的顺序似乎完全不确定。这里发生了什么?订阅评估和/或主机队列入队过程是多线程的吗?假设BizTalk不支持单例编排之间的有序传递是否公平?
答案 0 :(得分:1)
这仍然是一个突出的问题 - 我相信这是BizTalk中的一个错误。然而,我们已经重新设计了我们的解决方案,从未将单件编排直接绑定到其他单例编排的输出。
顺便提一下,这首先是糟糕的设计,因为BizTalk主要是为大容量并行消息处理而设计的。