优化 MSMQ 适配器的性能
MSMQ 适配器的优化在发送端与接收端有所不同。 对于接收端,通过设置接收位置属性可控制优化。 对于发送端,则可以使用业务流程来控制优化。
接收优化
在接收端,适配器应使用单个执行线程。 适配器是使用单个线程还是多个线程取决于接收位置上的 有序处理 属性的设置,如下所示:
当 属性为 True 时,适配器将在单个线程上运行。 这样可限制适配器一次只能处理一个消息,从而节省内存。 请注意,这实际上将 批大小 设置为 1 (1) ,而不考虑属性表中分配给它的值。
当 有序处理 为 False 时,适配器会运行多个线程,并且可以一次处理多个消息,从而提高性能。
如果对管理服务器资源设置了高级权限,或者消息的数量或大小可能耗尽可用内存,则必须将 有序处理 设置为 True 。
还可以通过减少接收位置上的 Batch Size 值来控制内存使用。 较小的批大小可使内存中保持较少的消息,从而仅使用较少内存。
通过将发送端口和接收位置分别放置在单独的计算机上,也可以降低内存使用率。
发送优化
在发送端,可以使用示例业务流程来实现等效的单个消息处理。 该示例将发送单个消息,然后一直等到其收到确认后才会发送下一个消息。 有关详细信息,请参阅 如何创建 MSMQ 接收位置和从代码发送端口。
远程事务性读取操作
使用 BizTalk Server MSMQ 适配器能够从事务性 MSMQ 队列执行远程读取操作。 这是因为 MSMQ 4.0 和更高版本支持远程事务性读取操作。 但是,事务性读取操作的速度通常较慢。 为优化性能,应在没有其他选择时使用这些操作。