2015-08-19 13 views
0

У меня возникли проблемы с попыткой добавить заголовок MQMD в вычислительный узел. Пытались что-то подобное:Построение заголовка MQMD в вычислительном узле броузера сообщений IBM

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. Узел трассировки после вычисления не достигается.

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

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

Capture более детальную диагностику путем воссоздания проблемы с пользовательской трассировки включен. Начните [здесь] (http://www-01.ibm.com/support/knowledgecenter/SSMKHH_10.0.0/com.ibm.etools.mft.doc/an01310_.htm) для получения информации о трассировке пользователя. Краткое описание процедуры трассировки пользователя [здесь] (http://www-01.ibm.com/support/docview.wss?uid=swg21177321#1). –

+0

Извините за поздний ответ, но настройка свойств, как указано выше, ничего не изменила в моем случае. BTW, ссылка на описание проблемы нарушена. – 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. вы отправили исключение, потому что механизм ESQL ожидает один тип данных, и вы даете ему другое. Имея это в виду, когда вы используете образец, который я разместил выше, вы получаете точно такое же исключение или знаете ли вы, что что-то еще не так? – Dave

+0

Да, исключение было точно таким же. – user3714601

0

Некоторые атрибуты в папке Properties может быть неожиданно пустым. Проблема возникает, когда они копируются в папку MQMD. Пользователь или sys trace покажет вам, какой из них.

Связана ли ваша проблема с узлом уведомления о тайм-ауте? У меня возникла проблема с Properties.CreationTime = null Я видел, что другие имели проблему с Properties.Topic = null

Я закодировал его, чтобы обойти проблему.

+0

Извините за поздний ответ, проблема действительно может быть связана с узлом уведомления о времени, так как поток начинается с него. Однако я вижу, что свойство 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');
Там нет необходимости указывать имя

 Смежные вопросы

  • Нет связанных вопросов^_^