Ibm mq 如何修复未解析的交换问题IBM MQ消息到BizTalk

Ibm mq 如何修复未解析的交换问题IBM MQ消息到BizTalk,ibm-mq,biztalk,Ibm Mq,Biztalk,我们使用IBM MQ XMS编写了一个.NET应用程序,它侦听队列,检查消息内容,然后将消息转发到正确的队列。消息未经修改就被转发 BizTalk拾取消息,但将其保留为未解析的交换格式,消息头信息位于消息体中。例如: RFH ... MQSTR ... <mcd><Msd>jms_text</Msd></mcd> d <jms><Dst>queue:///VC.AZ.BT.270.Q.5010?persistence=

我们使用IBM MQ XMS编写了一个.NET应用程序,它侦听队列,检查消息内容,然后将消息转发到正确的队列。消息未经修改就被转发

BizTalk拾取消息,但将其保留为未解析的交换格式,消息头信息位于消息体中。例如:

RFH ... MQSTR ... <mcd><Msd>jms_text</Msd></mcd>  d   <jms><Dst>queue:///VC.AZ.BT.270.Q.5010?persistence=1</Dst><Tms>1575310018071</Tms><Dlv>1</Dlv></jms> 
   <usr></usr> ISA*00*...
RFH。。。MQSTR。。。jms_文本dqueue:///VC.AZ.BT.270.Q.5010?persistence=115753100180711 
ISA*00*。。。

如果我们绕过.NET路由客户端,直接从MQ资源管理器将消息放到同一队列中,BizTalk会按预期将其解析为序列化交换格式。我们看不出为什么这个标题信息没有被解析出来。有什么想法吗?

您的.Net代码可能会出现明显的空字符或其他非可视字符。BizTalk将要求消息在消息头中包含所有字符,否则将失败。使用记事本++或UltraEdit之类的工具以十六进制模式检查消息,以便能够找出差异所在。路由客户端的用途是什么?它在消息流中的什么位置?为什么不使用BizTalk进行路由并删除有问题的程序?

您的.Net代码可能会出现大量空字符或其他非可视字符。BizTalk将要求消息在消息头中包含所有字符,否则将失败。使用记事本++或UltraEdit之类的工具以十六进制模式检查消息,以便能够找出差异所在。路由客户端的用途是什么?它在消息流中的什么位置?为什么不使用BizTalk进行路由并删除有问题的程序?

您的.Net路由客户端似乎有问题,但如果没有相关代码,很难说是什么问题。有关如何告诉XMS不要发送默认的附加RFH2头,请参阅上述问题的答案。@JoshMc成功了!我正在查看目的地是如何创建的,只是还没有找到引用targetClient的支持文档。谢谢您的.Net路由客户端似乎有问题,但如果没有相关代码,很难说是什么问题。请参阅上述问题的答案,了解如何告诉XMS不要发送默认的附加RFH2头。@JoshMc成功了!我正在查看目的地是如何创建的,只是还没有找到引用targetClient的支持文档。谢谢如上所述,通过在目标中设置targetClient=1并删除额外的RFH2头,问题得以解决。谢谢。如上所述,通过在目标中设置targetClient=1删除额外的RFH2头,问题得到了解决。谢谢