症状
请考虑以下情形:
-
您必须配置为用于从 IBM WebSphere MQ MQSC 适配器接收消息的接收位置。
-
MQSC 适配器被配置为使用设置的ucs-2 和 utf-16或utf-8字符集。
-
MQSC 适配器尝试接收来自 Microsoft BizTalk Server 2010 中的 IBM WebSphere MQ 的消息。
-
该邮件大于 1 兆字节 (MB)。
在此方案中,可能会在应用程序日志中记录以下错误︰
事件 ID: 5740
来源︰ BizTalk Server 说明: 适配器"MQSC"引发一条错误消息。详细介绍了"在试图从队列中获取消息时遇到故障。队列 = 默认情况下,queueManager = queuemanager,原因代码 = 2010"。
原因
发生此问题是因为 MQSC 适配器指定的字符集影响正在接收的邮件的总长度。例如的字符集时使用UTF-8 ,在实际消息需要缓冲区大小大于邮件大小的 5 倍。因此,1 MB 的邮件需要 5 MB 缓冲区。这超过 4MB MQSC 适配器所使用的默认最大消息长度设置。如果收到的邮件需要大于 MQSC 适配器的最大消息长度设置缓冲区空间,将记录在"症状"一节中提到的错误。
解决方案
累积更新信息
可解决此问题的修补程序所在的主机集成服务器 2010年累积更新包 8。有关如何获取累积更新程序包,请参阅更新软件包的主机集成服务器 2010年 8 的累计。
解决方法
若要变通解决此问题,请增加 MQSC 适配器配置中的最大消息长度设置以匹配接收的消息大小根据其他缓冲区空间所需的正在使用的字符集。
状态
Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。
详细信息
系统将从队列中检索消息时应用此更新后,MQSC 适配器指定用于 IBM WebSphere MQ 处理缓冲区自动调整大小的选项。
最大消息长度设置基本上是基于消息长度和编码 (字符集) 的建议的设置的消息。因此,应调整的最大消息长度设置以匹配特定邮件的大小要求来帮助确保所有邮件已成功都接收。在 MQSC 适配器参数和 IBM WebSphere MQ 设置中,可以指定最大消息长度设置。因此,应确保设置一致。 下面的列表描述了缓冲区大小要求根据从消息队列接收消息所使用的字符集︰-
字符集 utf-16:当您使用字符集设置为utf-16时,所需的缓冲区空间相当于两次收到的邮件的大小。
-
Ucs-2,utf-8 字符集︰使用设置ucs-2和 utf-8 字符集时,所需的缓冲区空间是五次收到的邮件的大小。
我们建议您不只在应用此更新,但也升级到 IBM WebSphere MQ 版本 7.5 Fixpack 1 时使用 MQSC 适配器。IBM WebSphere MQ 版本 7.5 Fixpack 1 包含 utf-16 DBCS 数据转换为相关问题的解决方法。 如果您无法升级到 IBM WebSphere MQ 版本 7.5 Fixpack 1,建议与此更新一起使用 IBM WebSphere MQ 版本 7.0.1.8 (或更高版本)。 本文讨论的第三方产品是由与 Microsoft 无关的公司生产的。Microsoft 不做这些产品的任何担保、默示或其他有关的性能或可靠性。