MSMQ 适配器的优化在发送和接收端之间有所不同。 通过在接收位置设置属性来控制接收端的优化。 在发送端,可以使用编排来管理优化。
接收优化
在接收端,可以让适配器使用单个执行线程。 适配器是使用单个线程还是多个线程取决于接收位置的 “有序处理 ”属性的设置,如下所示:
当属性为 True 时,适配器在单个线程上运行。 这会使适配器一次只能处理一条消息,并节省内存。 请注意,无论在属性表中分配的值如何,这都会有效地将 Batch Size 设置为 1(1)。
当 有序处理 为 False 时,适配器会运行多个线程,并且可以一次处理多个消息,从而提高性能。
如果您重视管理服务器资源,或者如果消息的数量或大小可能耗尽可用内存,则必须将 “有序处理” 设置为 True。
还可以通过减少接收位置上的 批大小 值来控制内存使用。 较小的批大小可减少内存中的消息数,因此使用更少的内存。
将发送端口和接收位置放置在单独的计算机上还可以减少内存使用。
发送优化
在发送方,可以使用示例编排来实现单消息处理的等效功能。 该示例发送单个消息,然后等待发送下一条消息,直到收到确认。 有关详细信息,请参阅 如何创建 MSMQ 接收位置和从代码发送端口。
远程事务读取操作
借助 BizTalk Server,MSMQ 适配器能够从事务性 MSMQ 队列执行远程读取操作。 这是因为 MSMQ 4.0 及更高版本支持远程事务读取操作。 但是,事务读取操作通常是缓慢的。 若要优化性能,应仅在没有其他选项时使用它们。