2015-08-19 49 views
0

我在嘗試在計算節點中添加MQMD標頭時遇到問題。 試過類似的東西:在IBM消息代理的計算節點中構建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節點之前,這裏是traceout。 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下面是用戶跟蹤的片段,顯示消息的try-catch節點從創建MQMD計算節點返回之後。

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. 

回答

1

沒有足夠的細節來說明發生了什麼。你使用的是什麼版本的MB/IIB?

您可能遇到描述爲here的問題。

考慮到這一點,請嘗試更改您的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 ; 
... 
+0

捕獲更詳細的診斷。從[開始](http://www-01.ibm.com/support/knowledgecenter/SSMKHH_10.0.0/com.ibm.etools.mft.doc/an01310_)開始。htm)瞭解有關用戶跟蹤的信息。用戶跟蹤程序的摘要是[here](http://www-01.ibm.com/support/docview.wss?uid=swg21177321#1)。 –

+0

對不起,對於遲來的答案,但設置屬性如上所述在我的情況下沒有改變。順便說一句,問題描述的鏈接被打破。 – user3714601

+0

忘記了版本,我用IIB 9.0 – user3714601

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'; 
+0

這聽起來有點奇怪,因爲通常MQFMT_NONE被解析爲包含多個空格的字符串。無論如何,嘗試設置這個沒有成功。 – user3714601

+0

MQMD解析器將它變成MQ序列化MQMD時由MQ符號常量表示的值。您發佈的異常正在拋出,因爲ESQL引擎需要一種數據類型,並且您正在給它一個不同的數據類型。考慮到這一點,當你使用我在上面發佈的示例時,你是否會遇到完全相同的異常,或者是否知道出現其他問題? – Dave

+0

是的,例外情況完全一樣。 – user3714601

0

在您的屬性文件夾的某些屬性可能是意外空。 將它們複製到MQMD文件夾時發生該問題。 用戶或系統跟蹤將顯示您哪一個。

您的問題與超時通知節點相關嗎? 我有問題的Properties.CreationTime =空 我看到其他人有問題的Properties.Topic = null

我編碼它繞過這個問題。

+0

對於遲到的答案感到抱歉,問題可能與Timout通知節點有關,因爲流程始於此。但是我看到Properties.CreationTime已填充,只有Properties.Topic爲null。任何有關它可以填補什麼的建議? – user3714601

+0

如果不使用它,主題可以保留爲空。 痕跡會告訴你缺少的東西。 – deJean

+0

剛剛添加了痕跡,請告訴我,如果您有任何建議。 – user3714601

0

你有沒有嘗試改變
CREATE LASTCHILD OF OutputRoot DOMAIN('MQMD') NAME 'MQMD';

CREATE LASTCHILD OF OutputRoot DOMAIN('MQMD');
沒有必要通過重新啓用了用戶跟蹤問題指定名稱