ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » General IBM MQ Support » runmqdlq converts payload when forwarding

Post new topic  Reply to topic Goto page 1, 2, 3  Next
 runmqdlq converts payload when forwarding « View previous topic :: View next topic » 
Author Message
murdeep
PostPosted: Tue Jun 02, 2009 7:37 am    Post subject: runmqdlq converts payload when forwarding Reply with quote

Master

Joined: 03 Nov 2004
Posts: 211

Hi, running:

Name: WebSphere MQ
Version: 7.0.0.1
CMVC level: p700-001-081219
BuildType: IKAP - (Production)


We have the dlq handler setup to move messages off of the SDLQ via an ACTION(FWD) to staging queues for subsequent processing. What we have noticed is that when a message is forwarded the payload that follows the MQDLH is converted. This causes us issues when we replay the message off of the staging queue since the end point application expects the data in the original senders encoding and ccsid.

Is there anyway to stop the product shipped runmqdlq from doing this conversion so that when we replay it it is is the original encoding and ccsid?
Back to top
View user's profile Send private message
sumit
PostPosted: Tue Jun 02, 2009 8:21 am    Post subject: Re: runmqdlq converts payload when forwarding Reply with quote

Partisan

Joined: 19 Jan 2006
Posts: 398

murdeep wrote:
We have the dlq handler setup to move messages off of the SDLQ via an ACTION(FWD) to staging queues for subsequent processing.


I know there could be ample reasons, but why are these messages going to DLQ as it's very clear from your post that you have a well defined destinationq for these messages? Is it because of q full or something else?

murdeep wrote:
What we have noticed is that when a message is forwarded the payload that follows the MQDLH is converted. This causes us issues when we replay the message off of the staging queue since the end point application expects the data in the original senders encoding and ccsid.

Are you sure that messages sitting in DLQ were fine and the problem occured when they were moved to different q?
Can you tell what's the exact changes it's doing in the message? CCSID is same accross the qmgr irrespective of qs.
_________________
Regards
Sumit
Back to top
View user's profile Send private message Yahoo Messenger
murdeep
PostPosted: Tue Jun 02, 2009 10:02 am    Post subject: Reply with quote

Master

Joined: 03 Nov 2004
Posts: 211

Messages on the SDLQ because the WMB flow threw an exception.

Message sitting on the SDLQ have MQDLH.Encoding 785 CCSID 37. Verified this by stopping dlq handler on SDLQ. When messages moved to broker exception queue the MQDLH.Encoding is 546 CCSID 437.

Broker flow expects message in EBCDIC, please no comments on this it is what it is. Broker flow now updated to check encoding but I think that is wrong. Personally I think runmqdlq shuld leave encoding abd ccsid alone and simply move the message unchanged.
Back to top
View user's profile Send private message
exerk
PostPosted: Tue Jun 02, 2009 1:45 pm    Post subject: Reply with quote

Jedi Council

Joined: 02 Nov 2006
Posts: 6339

murdeep wrote:
Messages on the SDLQ because the WMB flow threw an exception.

Message sitting on the SDLQ have MQDLH.Encoding 785 CCSID 37. Verified this by stopping dlq handler on SDLQ. When messages moved to broker exception queue the MQDLH.Encoding is 546 CCSID 437.

Broker flow expects message in EBCDIC, please no comments on this it is what it is. Broker flow now updated to check encoding but I think that is wrong. Personally I think runmqdlq shuld leave encoding abd ccsid alone and simply move the message unchanged.


Firstly, I suggest you look at the source code for the supplied dead-letter queue handler and see what it does.

Secondly, dead-letter queues are there as undelivered message queues, not as some dump because an application spits its dummy (don't get me started about java...).

Thirdly, why not have the Broker put the messages directly to the exception queue? (I'm not a Broker developer, so this seems a good question from my point of view).
_________________
It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Tue Jun 02, 2009 2:22 pm    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

If you define a Backout Requeue Queue and Backout Requeue Depth on the queue being read by MQInput, then the message will not get dumped to DLQ, but to the Backout Requeue Queue instead.

Without *any* change in code.
Back to top
View user's profile Send private message
exerk
PostPosted: Tue Jun 02, 2009 3:10 pm    Post subject: Reply with quote

Jedi Council

Joined: 02 Nov 2006
Posts: 6339

mqjeff wrote:
If you define a Backout Requeue Queue and Backout Requeue Depth on the queue being read by MQInput, then the message will not get dumped to DLQ, but to the Backout Requeue Queue instead.

Without *any* change in code.


Is that what I said, but in a roundabout sort of way? or
_________________
It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys.
Back to top
View user's profile Send private message
bruce2359
PostPosted: Tue Jun 02, 2009 3:36 pm    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9469
Location: US: west coast, almost. Otherwise, enroute.

Quote:
payload that follows the MQDLH is converted

In what way converted? From ASCII to HEX? From English to Spanish?
_________________
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
View user's profile Send private message
mqjeff
PostPosted: Tue Jun 02, 2009 8:07 pm    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

exerk wrote:
mqjeff wrote:
If you define a Backout Requeue Queue and Backout Requeue Depth on the queue being read by MQInput, then the message will not get dumped to DLQ, but to the Backout Requeue Queue instead.

Without *any* change in code.


Is that what I said, but in a roundabout sort of way? or


Back to top
View user's profile Send private message
fjb_saper
PostPosted: Tue Jun 02, 2009 8:18 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

mqjeff wrote:
Backout Requeue Depth

Did they change the Backout Threshold to Backout Requeue Depth in V7?
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
AkankshA
PostPosted: Tue Jun 02, 2009 8:22 pm    Post subject: Reply with quote

Grand Master

Joined: 12 Jan 2006
Posts: 1494
Location: Singapore

I can see them as Backout Requeue Queue and Backout Threshold in V7 Explorer


_________________
Cheers
Back to top
View user's profile Send private message Visit poster's website
mqjeff
PostPosted: Wed Jun 03, 2009 1:41 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

fjb_saper wrote:
mqjeff wrote:
Backout Requeue Depth

Did they change the Backout Threshold to Backout Requeue Depth in V7?
Back to top
View user's profile Send private message
aditya.aggarwal
PostPosted: Wed Jun 03, 2009 2:18 am    Post subject: Reply with quote

Master

Joined: 13 Jan 2009
Posts: 252

Murdeep Wrote:

Quote:
Message sitting on the SDLQ have MQDLH.Encoding 785 CCSID 37. Verified this by stopping dlq handler on SDLQ. When messages moved to broker exception queue the MQDLH.Encoding is 546 CCSID 437[


Does the CCSID 37 is the CCSID value of the Sender queue manager or Broker queue manager? I think CCSID of your RCVR queue manager is 437?


Murdeep Wrote:

Quote:
This causes us issues when we replay the message off of the staging queue since the end point application expects the data in the original senders encoding and ccsid.


Are you using hard coded value for CCSID and encoding in the endpoint application code? If yes Why you need this?

Sumeet Wrote:
Quote:
CCSID is same accross the qmgr irrespective of qs


CCSID is not same across queue managers. When message will arrive in queue at Target System then it always contains the CCSID of the Last SDR queue manager in MQMD. Ofcourse This is true when CONVERT is Off on SDR channel.



Cheers,
Aditya
Back to top
View user's profile Send private message
sumit
PostPosted: Wed Jun 03, 2009 3:08 am    Post subject: Reply with quote

Partisan

Joined: 19 Jan 2006
Posts: 398

aditya.aggarwal wrote:
Sumeet Wrote:


Wrong spelling... (atleast not with names)

aditya.aggarwal wrote:
Sumeet Wrote:
Quote:
CCSID is same accross the qmgr irrespective of qs


CCSID is not same across queue managers.


If you see the term in bold it says, 'the qmgr'. So, I am talking about 1 queue manager here but not queue managers. The point I'd like to put forward was, CCSID doesn't change with every q in a qmgr. If, there is a change in it's value when a msg is moved from one q to another by an app, then it looks to be a fault of app.
_________________
Regards
Sumit
Back to top
View user's profile Send private message Yahoo Messenger
murdeep
PostPosted: Wed Jun 03, 2009 6:31 am    Post subject: Reply with quote

Master

Joined: 03 Nov 2004
Posts: 211

Ok, some comments.

Quote:
In what way converted? From ASCII to HEX? From English to Spanish?

You're j/k right?

Quote:
If you define a Backout Requeue Queue and Backout Requeue Depth on the queue being read by MQInput, then the message will not get dumped to DLQ, but to the Backout Requeue Queue instead.


True, but I have 100's of flows and I'd prefer to manage one SDLQ then 100's of backout queues. If I use a single backout queue then I must be able to parse the messages that end up there to know where to replay them to which is not a good design since I'll need to imbed the parsing knowledge of 100's of message formats.

Also, runmqdlq works well in replaying messages back to the flow input when the root cause of the broker exception has been determined and resolved.

Quote:
Does the CCSID 37 is the CCSID value of the Sender queue manager or Broker queue manager? I think CCSID of your RCVR queue manager is 437?


Sending app is 785/37 (z/OS), broker is 546/437 (W2K). Like I said, as the message sits on the SDLQ the MQMD.Encoding/CCSIS that describes the DLQ message is 546/437. The MQDLH.Encoding/CCSID is 785/37. Which is correct. I would expect then that when the message is forwarded by runmqdlq that the MQMD.Encoding/CCSID would be 785/37 since this is the encoding/CCSID of the payload. But it gets converted by runmqdlq to 546/437. Note that the message payload format is MQSTR so it does indeed get converted, however the msg flow expects the message in z/OS encoding/CCSID which is the problem.

Quote:
If, there is a change in it's value when a msg is moved from one q to another by an app, then it looks to be a fault of app.


Correct, I suspect runmqdlq is doing a get with convert from the SDLQ which I think is something that should be controlled via the rules table. That is my question is this possible? Sometimes IBM doesn't doc all options I was wondering if this is something that I could control via some undoc'd option.
Back to top
View user's profile Send private message
exerk
PostPosted: Wed Jun 03, 2009 6:51 am    Post subject: Reply with quote

Jedi Council

Joined: 02 Nov 2006
Posts: 6339

murdeep wrote:
...Correct, I suspect runmqdlq is doing a get with convert from the SDLQ which I think is something that should be controlled via the rules table. That is my question is this possible? Sometimes IBM doesn't doc all options I was wondering if this is something that I could control via some undoc'd option.


exerk wrote:
Firstly, I suggest you look at the source code for the supplied dead-letter queue handler and see what it does...



_________________
It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2, 3  Next Page 1 of 3

MQSeries.net Forum Index » General IBM MQ Support » runmqdlq converts payload when forwarding
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.