我在尝试在计算节点中添加 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.