1

我在尝试在计算节点中添加 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_STRING、MQFMT_RF_HEADER_2(接下来添加了 MQRFH2 标头),但结果相同。

谁能给我任何线索?是否有可能以某种方式从经纪人那里获得一些更有意义的诊断?

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

( ['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. 
4

4 回答 4

1

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

您的问题与超时通知节点有关吗?我遇到了 Properties.CreationTime = null 的问题我看到其他人遇到了 Properties.Topic = null 的问题

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

于 2015-09-01T09:40:29.437 回答
1

您是否尝试更改
CREATE LASTCHILD OF OutputRoot DOMAIN('MQMD') NAME 'MQMD';

CREATE LASTCHILD OF OutputRoot DOMAIN('MQMD');
无需指定名称

于 2016-03-14T10:01:46.123 回答
1

没有足够的细节来说明正在发生的事情。您使用的是哪个版本的 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 ;
...
于 2015-08-23T22:12:16.757 回答
0

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

http://www-01.ibm.com/support/knowledgecenter/SSMKHH_10.0.0/com.ibm.etools.mft.doc/ad09700_.htm

IE/

SET OutputRoot.MQMD.Format =  'MQFMT_NONE';
于 2015-08-28T15:29:13.583 回答