Author |
Message
|
sangminli |
Posted: Sat Aug 28, 2010 2:43 am Post subject: build MQDLH with MQHeader |
|
|
 Voyager
Joined: 26 Aug 2008 Posts: 75 Location: Hangzhou, China
|
Sorry for double posts, I just found I posted in wrong division:
this is what I want to do(actually, it is part of the error handler):
MQInput node reads a msg from a queue (fail.queue), which is the original app msg. And I want to put that intact app msg into app.dead.queue, so I can replay it with runmqdlh. So I wired a MQHeader node between the MQInput node and the MQOutput node app.dead.queue. The intact msg got put into the app.dead.queue, but I failed to replay the msg with runmqdlq.
I put a trace node before the flow put the msg into the dead queue, and trace details are like:
Root:( ['MQROOT' : 0x113c56830]
(0x01000000:Name):Properties = ( ['MQPROPERTYPARSER' : 0x113d41ed0]
(0x03000000:NameValue):MessageSet = '' (CHARACTER)
(0x03000000:NameValue):MessageType = '' (CHARACTER)
(0x03000000:NameValue):MessageFormat = '' (CHARACTER)
(0x03000000:NameValue):Encoding = 273 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 819 (INTEGER)
(0x03000000:NameValue):Transactional = TRUE (BOOLEAN)
(0x03000000:NameValue):Persistence = TRUE (BOOLEAN)
(0x03000000:NameValue):CreationTime = GMTTIMESTAMP '2010-08-28 08:31:37.140' (GMTTIMESTAMP)
(0x03000000:NameValue):ExpirationTime = -1 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):ReplyIdentifier = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):ReplyProtocol = 'MQ' (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):MQMD = ( ['MQHMD' : 0x113d20e90]
(0x03000000:NameValue):SourceQueue = 'SQA.INQUEUE' (CHARACTER)
(0x03000000:NameValue):Transactional = TRUE (BOOLEAN)
(0x03000000:NameValue):Encoding = 273 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 819 (INTEGER)
(0x03000000:NameValue):Format = 'MQDEAD ' (CHARACTER)
(0x03000000:NameValue):Version = 2 (INTEGER)
(0x03000000:NameValue):Report = 0 (INTEGER)
(0x03000000:NameValue):MsgType = 8 (INTEGER)
(0x03000000:NameValue):Expiry = -1 (INTEGER)
(0x03000000:NameValue):Feedback = 0 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):Persistence = 1 (INTEGER)
(0x03000000:NameValue):MsgId = X'414d5120424d534744345132202020204c59c2cd20b24504' (BLOB)
(0x03000000:NameValue):CorrelId = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):BackoutCount = 0 (INTEGER)
(0x03000000:NameValue):ReplyToQ = ' ' (CHARACTER)
(0x03000000:NameValue):ReplyToQMgr = 'BMSGD4Q2 ' (CHARACTER)
(0x03000000:NameValue):UserIdentifier = 'e502316 ' (CHARACTER)
(0x03000000:NameValue):AccountingToken = X'0438373036000000000000000000000000000000000000000000000000000006' (BLOB)
(0x03000000:NameValue):ApplIdentityData = ' ' (CHARACTER)
(0x03000000:NameValue):PutApplType = 6 (INTEGER)
(0x03000000:NameValue):PutApplName = 'amqsput ' (CHARACTER)
(0x03000000:NameValue):PutDate = DATE '2010-08-28' (DATE)
(0x03000000:NameValue):PutTime = GMTTIME '08:31:37.140' (GMTTIME)
(0x03000000:NameValue):ApplOriginData = ' ' (CHARACTER)
(0x03000000:NameValue):GroupId = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):MsgSeqNumber = 1 (INTEGER)
(0x03000000:NameValue):Offset = 0 (INTEGER)
(0x03000000:NameValue):MsgFlags = 0 (INTEGER)
(0x03000000:NameValue):OriginalLength = -1 (INTEGER)
)
(0x01000000:Name):MQDLH = ( ['MQDEAD' : 0x113d3c610]
(0x03000000:NameValue):Format = ' ' (CHARACTER)
(0x03000000:NameValue):Version = 1 (INTEGER)
(0x03000000:NameValue):Encoding = 273 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 819 (INTEGER)
(0x03000000:NameValue):Reason = 12450 (INTEGER)
(0x03000000:NameValue):DestQName = 'SQA.INQUEUE' (CHARACTER)
(0x03000000:NameValue):DestQMgrName = 'BMSGD4Q2 ' (CHARACTER)
(0x03000000:NameValue):PutApplType = 6 (INTEGER)
(0x03000000:NameValue):PutApplName = 'amqsput ' (CHARACTER)
(0x03000000:NameValue):PutDate = DATE '2010-08-28' (DATE)
(0x03000000:NameValue):PutTime = GMTTIME '08:31:37.140' (GMTTIME)
)
(0x01000000:Name):BLOB = ( ['none' : 0x113d3c950]
(0x03000000:NameValue):BLOB = X'74657374206d7367' (BLOB)
)
)
Could anyone advise what is going wrong here? Thanks! |
|
Back to top |
|
 |
mqjeff |
Posted: Sat Aug 28, 2010 6:45 am Post subject: Re: build MQDLH with MQHeader |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
sangminli wrote: |
Sorry for double posts, I just found I posted in wrong division: |
The proper response to this is to post again to your first post and ask a moderator to move it to the correct forum. |
|
Back to top |
|
 |
Vitor |
Posted: Sat Aug 28, 2010 8:44 am Post subject: Re: build MQDLH with MQHeader |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
sangminli wrote: |
I failed to replay the msg with runmqdlq. |
Failed how? Couldn't bring yourself to do it? When you ran runmqdlq the server exploded? It was all going fine until a bunch of monkeys flew through the windows & stole your machine?
A few clues, like if you got any error messages or if the messages just sat on this app dead letter queue (which I trust is named that because it's different to the one the queue manager is using) will be an immense help to us.
Better information, better advice. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
rekarm01 |
Posted: Sat Aug 28, 2010 8:50 am Post subject: Re: build MQDLH with MQHeader |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 1415
|
sangminli wrote: |
I want to put that intact app msg into app.dead.queue, so I can replay it with runmqdlh. |
Okay ...
sangminli wrote: |
Could anyone advise what is going wrong here? |
The entire original message, including the original header(s) normally follows the MQDLH.
sangminli wrote: |
(0x03000000:NameValue):Reason = 12450 (INTEGER) |
This should be one of the MQFB_* or MQRC_* values. |
|
Back to top |
|
 |
sangminli |
Posted: Sun Aug 29, 2010 5:04 am Post subject: Re: build MQDLH with MQHeader |
|
|
 Voyager
Joined: 26 Aug 2008 Posts: 75 Location: Hangzhou, China
|
rekarm01 wrote: |
sangminli wrote: |
I want to put that intact app msg into app.dead.queue, so I can replay it with runmqdlh. |
Okay ...
sangminli wrote: |
Could anyone advise what is going wrong here? |
The entire original message, including the original header(s) normally follows the MQDLH.
sangminli wrote: |
(0x03000000:NameValue):Reason = 12450 (INTEGER) |
This should be one of the MQFB_* or MQRC_* values. |
ok.. actually, we added a nubmer 1 before the mqrc if it is a bip code, so actually the error is bip2450..
if this would cause some problem, i will set that to 0 to take a test..
i will do it tomorrow.. |
|
Back to top |
|
 |
sangminli |
Posted: Sun Aug 29, 2010 5:07 am Post subject: Re: build MQDLH with MQHeader |
|
|
 Voyager
Joined: 26 Aug 2008 Posts: 75 Location: Hangzhou, China
|
Vitor wrote: |
sangminli wrote: |
I failed to replay the msg with runmqdlq. |
Failed how? Couldn't bring yourself to do it? When you ran runmqdlq the server exploded? It was all going fine until a bunch of monkeys flew through the windows & stole your machine?
A few clues, like if you got any error messages or if the messages just sat on this app dead letter queue (which I trust is named that because it's different to the one the queue manager is using) will be an immense help to us.
Better information, better advice. |
for the dlq rule, i just set 'retry', if still fail, it will be forwarded to a undelivered.msg.queue. and actually, the dead msg just be found in the undelivered.msg.queue, hence the retry failed. and there is no errors.
where is the error msg for the runmqdlq? |
|
Back to top |
|
 |
bruce2359 |
Posted: Sun Aug 29, 2010 6:37 am Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
Quote: |
for the dlq rule, i just set 'retry', |
It would help quite a bit if you posted the complete runmqdlq handler script here.
Highlight (bold) the rule that does the retry for the ReasonCode in question. _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
sangminli |
Posted: Sun Aug 29, 2010 10:16 pm Post subject: |
|
|
 Voyager
Joined: 26 Aug 2008 Posts: 75 Location: Hangzhou, China
|
bruce2359 wrote: |
Quote: |
for the dlq rule, i just set 'retry', |
It would help quite a bit if you posted the complete runmqdlq handler script here.
Highlight (bold) the rule that does the retry for the ReasonCode in question. |
the dlq rule is like below:
RETRYINT(30) WAIT(YES)
REASON(MQRC_Q_FULL) ACTION(RETRY) RETRY(999999999)
REASON(MQRC_PUT_INHIBITED) ACTION(RETRY) RETRY(999999999)
REASON(MQRC_UNKNOWN_OBJECT_NAME) ACTION(FWD) FWDQ(CORE.MISDIRECTED_MESSAGE) HEADER(YES)
REASON(MQRC_UNKNOWN_ALIAS_BASE_Q) ACTION(FWD) FWDQ(CORE.MISDIRECTED_MESSAGE) HEADER(YES)
FORMAT(MQTRIG) ACTION(FWD) FWDQ(CORE.FAILEDTRIGGER_MESSAGE) HEADER(NO)
ACTION(FWD) FWDQ(CORE.UNDELIVERED_MESSAGE) HEADER(YES) |
|
Back to top |
|
 |
sangminli |
Posted: Sun Aug 29, 2010 11:02 pm Post subject: |
|
|
 Voyager
Joined: 26 Aug 2008 Posts: 75 Location: Hangzhou, China
|
sangminli wrote: |
bruce2359 wrote: |
Quote: |
for the dlq rule, i just set 'retry', |
It would help quite a bit if you posted the complete runmqdlq handler script here.
Highlight (bold) the rule that does the retry for the ReasonCode in question. |
the dlq rule is like below:
RETRYINT(30) WAIT(YES)
REASON(MQRC_Q_FULL) ACTION(RETRY) RETRY(999999999)
REASON(MQRC_PUT_INHIBITED) ACTION(RETRY) RETRY(999999999)
REASON(MQRC_UNKNOWN_OBJECT_NAME) ACTION(FWD) FWDQ(CORE.MISDIRECTED_MESSAGE) HEADER(YES)
REASON(MQRC_UNKNOWN_ALIAS_BASE_Q) ACTION(FWD) FWDQ(CORE.MISDIRECTED_MESSAGE) HEADER(YES)
FORMAT(MQTRIG) ACTION(FWD) FWDQ(CORE.FAILEDTRIGGER_MESSAGE) HEADER(NO)
ACTION(FWD) FWDQ(CORE.UNDELIVERED_MESSAGE) HEADER(YES) |
I am sorry, I just found I did make a mistake here. and actually what I want for the dlq rule is just:
RETRYINT(30) WAIT(YES)
ACTION (RETRY) RETRY (3)
This issue has been resolved. Thank you all for all your advice/time/attention! |
|
Back to top |
|
 |
|