Ibm mq 在IBM message broker的计算节点中构建MQMD头

Ibm mq 在IBM message broker的计算节点中构建MQMD头,ibm-mq,messagebroker,ibm-integration-bus,extended-sql,Ibm Mq,Messagebroker,Ibm Integration Bus,Extended Sql,尝试在计算节点中添加MQMD标头时遇到问题。 试过这样的方法: SET OutputRoot.Properties = InputRoot.Properties; CREATE LASTCHILD OF OutputRoot DOMAIN('MQMD') NAME 'MQMD'; SET OutputRoot.MQMD.Format = MQFMT_NONE; SET OutputRoot.MQMD.CodedCharSetId = 1208; SET OutputRoot.MQMD.Enc

尝试在计算节点中添加MQMD标头时遇到问题。 试过这样的方法:

SET OutputRoot.Properties = InputRoot.Properties;
CREATE LASTCHILD OF OutputRoot DOMAIN('MQMD') NAME 'MQMD';
SET OutputRoot.MQMD.Format =  MQFMT_NONE; 
SET OutputRoot.MQMD.CodedCharSetId = 1208;
SET OutputRoot.MQMD.Encoding = 546;
但最终总会有这样一个例外:

Text:CHARACTER:Caught exception and rethrowing
Insert
Type:INTEGER:14
Text:CHARACTER:test.MyAdp.AddHeader
RecoverableException
File:CHARACTER:F:\build\slot1\S900_P\src\CommonServices\ImbValue.cpp
Line:INTEGER:989
Function:CHARACTER:ImbValue::stateError
Type:CHARACTER:
Name:CHARACTER:
Label:CHARACTER:
Catalog:CHARACTER:BIPmsgs
Severity:INTEGER:3
Number:INTEGER:2329
Text:CHARACTER:Value not valid
当然,在不添加MQMD头的情况下,一切工作都非常好。 我尝试使用其他格式,如MQFMT_字符串、MQFMT_RF_头_2(接下来添加了MQRFH2头),但结果相同

有人能给我一些线索吗? 是否有可能以某种方式从代理获得一些更有意义的诊断

UPD 这里是在进入尝试添加MQMD头的计算节点之前的跟踪。永远不会到达计算后的跟踪节点

( ['GENERICROOT' : 0xac05710]
(0x01000000:Name):Properties = ( ['GENERICPROPERTYPARSER' : 0xaf5ccc0]
(0x03000000:NameValue):MessageSet             = '' (CHARACTER)
(0x03000000:NameValue):MessageType            = '' (CHARACTER)
(0x03000000:NameValue):MessageFormat          = '' (CHARACTER)
(0x03000000:NameValue):Encoding               = 546 (INTEGER)
(0x03000000:NameValue):CodedCharSetId         = 0 (INTEGER)
(0x03000000:NameValue):Transactional          = TRUE (BOOLEAN)
(0x03000000:NameValue):Persistence            = FALSE (BOOLEAN)
(0x03000000:NameValue):CreationTime           = NULL
(0x03000000:NameValue):ExpirationTime         = -1 (INTEGER)
(0x03000000:NameValue):Priority               = 0 (INTEGER)
(0x03000000:NameValue):ReplyIdentifier        = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):ReplyProtocol          = 'UNKNOWN' (CHARACTER)
(0x03000000:NameValue):Topic                  = NULL
(0x03000000:NameValue):ContentType            = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceType     = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceToken    = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourcePassword = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceIssuedBy = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedType     = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedToken    = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedPassword = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedIssuedBy = '' (CHARACTER)
)
(0x01000000:Name):BLOB       = ( ['none' : 0xb30d460]
(0x03000000:NameValue):BLOB = X'314........d0a' (BLOB)
)
) 
UPD2这里是用户跟踪的片段,消息在从创建MQMD的计算节点返回后立即出现在try-catch节点中

2015-09-14 13:20:06.936871     1200   UserTrace   BIP2539I: Node '': Evaluating expression ''InputRoot.BLOB.BLOB || CAST(header AS BLOB CCSID 1208)'' at ('test.MyAdp_AddHeader.Main', '31.51'). This resolved to ''X'314....3d0d'''. 
2015-09-14 13:20:06.937023     1200   UserTrace   BIP2566I: Node 'test.MyAdp.AddHeader': Assigning value       ''X'314...6d0'... (data of len 3915 truncated)'' to field / variable ''OutputRoot.BLOB.BLOB''. 
2015-09-14 13:20:06.937043     1200   UserTrace   BIP2537I: Node 'test.MyAdp.AddHeader': Executing statement   ''RETURN TRUE;'' at ('test.MyAdp_AddHeader.Main', '33.4'). 
2015-09-14 13:20:06.937718     1200   UserTrace   BIP4081I: Message propagated to catch terminal from try-catch node 'test.MyAdp.ErrorHandler.Timer.Try Catch'. 
                                   The try-catch node 'test.MyAdp.ErrorHandler.Timer.Try Catch' has caught an exception which occurred in a node connected to its try terminal. The message has been augmented with an exception list and is propagating it to any nodes connected to its catch terminal for further processing. See the following messages for details of the exception list. 
                                   No user action required. 

没有提供足够的细节来说明发生了什么。您使用的是什么版本的MB/IIB

您可能遇到了所描述的问题

考虑到这一点,请尝试将您的ESQL更改为:

SET OutputRoot.Properties.CodedCharSetId = 1208 ;
SET OutputRoot.Properties.Encoding = 546 ;
SET OutputRoot.MQMD.Format = MQMFT_NONE ;
SET OutputRoot.MQMD.CodedCharSetId = 1208 ;
SET OutputRoot.MQMD.Encoding = 546 ;
...

您是否尝试过将格式设置为字符值?根据文件,这是预期的:

即/


属性文件夹中的某些属性可能意外为空。 将它们复制到MQMD文件夹时会发生此问题。 用户或系统跟踪将显示哪一个

您的问题是否与超时通知节点有关? 我遇到了Properties.CreationTime=null的问题 我看到其他人在属性方面有问题。Topic=null

我对其进行了编码以绕过该问题。

您是否尝试更改
创建OutputRoot域(“MQMD”)名称“MQMD”的最后一个子项


创建OutputRoot域(“MQMD”)的最后一个子项


无需指定名称

通过在启用用户跟踪的情况下重新创建问题来捕获更详细的诊断。开始获取有关用户跟踪的信息。用户跟踪过程的摘要是。很抱歉回答得太晚,但在我的案例中,如上所述设置属性并没有改变任何东西。顺便说一句,问题描述的链接已断开。忘记了版本,我使用IIB 9.0感谢您让我知道断开的链接,我已更新了该链接。我想我们需要一个用户跟踪来获得更多诊断。刚刚添加了跟踪,如果您有任何建议,请告诉我。这对我来说有点奇怪,因为通常MQFMT_NONE解析为包含几个空格的字符串。无论如何,尝试设置此选项均未成功。MQMD解析器将在序列化MQMD时将其转换为MQ符号常量表示的值。正在引发您发布的异常,因为ESQL引擎需要一个数据类型,而您正在为它提供一个不同的数据类型。考虑到这一点,当您使用我在上面发布的示例时,您是否得到完全相同的异常,或者您是否知道发生了其他错误?是的,异常完全相同。很抱歉回答得太晚,这个问题确实可能与Timout通知节点有关,因为流程从它开始。但是我看到Properties.CreationTime已填充,只有Properties.Topic为空。如果您不使用该主题,则该主题可以保持为空。跟踪将显示缺少的内容。刚刚添加了跟踪,如果您有任何建议,请告诉我。让时间控制消息(而不是队列输入)通过并停止跟踪。然后分析你的踪迹。我不确定我是否明白了重点。发布的跟踪由时间控制的消息生成。我们还能从追踪中得到什么?
SET OutputRoot.MQMD.Format =  'MQFMT_NONE';