BizTalk组中的多个BizTalk服务器 - 如何处理并发?

agg*_*tes 2 concurrency biztalk biztalk-deployment biztalk-2009

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

我们现在关注的是如何处理适配器(如WCF SQL和文件适配器)的并发性,因为例如SQL Adapter可能有两个BizTalk Receive主机将继续在同一个DB表上进行轮询.

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

对于文件适配器我所知道的是,可以将接收适配器设置为在处理期间更改文件的文件名,以便其他BizTalk主机可以避免拾取文件但我不太确定这个解决方案是否足以处理并发.

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

非常感谢

Dav*_*all 7

一般大多数的BizTalk适配器将避免你的竞争条件开箱.

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

下面解释了文件重命名功能的用法(来自MSDN文档)

您还可以配置文件接收适配器以在处理文件时重命名文件.您应重命名文件以确保接收适配器在关闭并重新启动接收位置时不会生成重复消息

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

对于这些适配器,您可以使用群集主机的BizTalk功能.有一个帖子在这里说明一个群集主机的使用和配置.这是确保SQL轮询不会产生重复的最简单方法.如果需要,您还可以在SQL级别实现此目的.

除此之外,您真正了解业务流程的细节,您需要针对每个案例进行设计.例如 - 如果源系统提供两次相同的文件会发生什么?

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

BizTalk - 从DB接收端口读取两次

网络负载平衡Biztalk实例