我目前负责建立一个多环境的BizTalk部署,我们正计划在BizTalk组中部署两个或多个BizTalk Server,以提供高可用性和可伸缩性。

现在,我们关心的是如何处理诸如WCF SQL和文件适配器之类的适配器的并发性,因为例如对于SQL适配器来说,两个BizTalk Receive主机可能会继续轮询同一数据库表。

最初,我对SQL的想法是使用锁定提示,但是我不确定这是否还有其他问题,或者是否有其他经过验证的解决方案。

对于文件适配器,我所知道的是可以设置接收适配器以在处理过程中更改文件的文件名,以便其他BizTalk主机将避免拾取文件,但我不确定此解决方案是否足以处理并发性。

我将不胜感激任何帮助/建议。

非常感谢

最佳答案

通常,大多数BizTalk适配器都会为您避免竞争条件。

例如,BizTalk文件适配器已经实现了文件锁定,因此文件适配器在不同主机上的多个实例将不会读取同一文件。

文件重命名功能的用法说明如下(来自MSDN documentation


您也可以配置文件
接收适配器以在以下情况下重命名文件
处理它们。您应该重命名
文件以确保接收
适配器不会生成重复项
消息,如果接收位置是
关闭并重新启动


在多个实例上运行时,有几种适配器不安全。这些包括(但可能还有其他)轮询方案中的POP3,FTP,MSMQ / MSMQT和数据库适配器。

对于这些适配器,您可以使用群集主机的BizTalk功能。 here帖子解释了群集主机的用法和配置。这是确保SQL轮询不会产生重复项的最简单方法。如果需要,您也可以在SQL级别上实现此目的。

除此之外,您确实要深入了解业务流程的细节,并且需要针对每种情况进行设计。例如-如果源系统两次提供相同文件,会发生什么?

有关此主题的更多信息,请参见以下两个SO帖子:

BizTalk - Receive Port reading twice from DB

Network Load Balancing Biztalk Instances

关于concurrency - BizTalk组中的多个BizTalk Server-如何处理并发?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2174966/

10-13 04:26