在IBM消息代理

时间:2015-08-19 18:23:11

标签: 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.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. 

3 个答案:

答案 0 :(得分:1)

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

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

的问题

我把它编码为绕过这个问题。

答案 1 :(得分:0)

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

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

即/

SET OutputRoot.MQMD.Format =  'MQFMT_NONE';

答案 2 :(得分:0)

你有没有尝试过改变?
CREATE LASTCHILD OF OutputRoot DOMAIN('MQMD') NAME 'MQMD';

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

相关问题