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 Previous  1, 2, 3
 runmqdlq converts payload when forwarding « View previous topic :: View next topic » 
Author Message
murdeep
PostPosted: Wed Jun 03, 2009 8:00 am    Post subject: Reply with quote

Master

Joined: 03 Nov 2004
Posts: 211

Vitor wrote:
[To answer your point directly, the sending MCA doing a convert by default would require the sending machine to have all the possible conversion tables in it's OS for each possible target. The assumption is that the receiving OS will know how to translate into it's code page in more cases than the sending one will. Remember how many possible translations there are across all the platforms & languages WMQ supports.

Has to anyways since the MQMD must be converted in all cases between platforms so your point is moot.
Back to top
View user's profile Send private message
Vitor
PostPosted: Wed Jun 03, 2009 9:10 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

murdeep wrote:
Has to anyways since the MQMD must be converted in all cases between platforms so your point is moot.


It's converted by the receiver (where the fields are converted)
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
murdeep
PostPosted: Wed Jun 03, 2009 12:15 pm    Post subject: Reply with quote

Master

Joined: 03 Nov 2004
Posts: 211

Vitor wrote:
murdeep wrote:
Has to anyways since the MQMD must be converted in all cases between platforms so your point is moot.


It's converted by the receiver (where the fields are converted)


Qmgr can be both sender or receiver so it needs the ccsid conv tables regardless if the sender channel or receiver channel makes good.

Anyways, looking at compiling the product shipped amqsdlq to provide an option to convert.
Back to top
View user's profile Send private message
Vitor
PostPosted: Wed Jun 03, 2009 1:14 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

murdeep wrote:
Anyways, looking at compiling the product shipped amqsdlq to provide an option to convert.


It's a miracle the rest of us manage with the supplied one so well.

I'm sure you'll find this a simple and effective solution to your situation.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
murdeep
PostPosted: Wed Jun 03, 2009 2:23 pm    Post subject: Reply with quote

Master

Joined: 03 Nov 2004
Posts: 211

Vitor wrote:
murdeep wrote:
Anyways, looking at compiling the product shipped amqsdlq to provide an option to convert.


It's a miracle the rest of us manage with the supplied one so well.


WTF? Do you think there could be any chance that some BS politics may be playing into the fact that I have to go down this road? Many places I've been have used vanilla runmqdlq with no problems. Just so happens this one has some history that requires some unique processing requirements. Save the snide comments please.
Back to top
View user's profile Send private message
bruce2359
PostPosted: Wed Jun 03, 2009 4:04 pm    Post subject: Reply with quote

Poobah

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

Quote:
Ok, some comments.

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

You're j/k right?


No, I was serious. It seems that you tossed the first sarcasm.

Moving along...

We're trying to understand the symptoms you see to identify the underlying problem.

Was the original message created on a different platform from the platform that hosts the dlq where the message ended up (moved across a network or a client bindings app)? If so, then the consuming application would/should have driven the conversion process in its MQGET (or equivalent).

If the msg arrived form a different platform (different CCSID), and if the creating app loaded the application payload with binaries, but set the MQMD_FORMAT field to string, then the first consumer would drive the conversion.

I've seen this before - in a banking app where field delimiters and other odd characters were interspersed with user data that both the creating and consuming app 'knew' how to encode/decode. Both apps depended on conversion NOT taking place. Tricky app coding led them to the identical symptom, namely: msg ended up in dlq, was converted when FWDed.

If the msg was created on the same platform (CCSID), then no conversion will take place - unless the creating app force-fed a CCSID into the MQMD; thus confusing the dlh into driving conversion.

This is as complicated as it appears.

More details about the creating and consuming app would help.
_________________
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
PeterPotkay
PostPosted: Wed Jun 03, 2009 5:30 pm    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7723

murdeep wrote:

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.


"however the msg flow expects the message in z/OS encoding/CCSID"

What if you change the sending app to leave the MQMD_Format field blank? Nothing will be able to convert the message, including the DLQ handler. But you are saying your receiving app expects the message unconverted, even when being handed the message directly by the QM via the regular queue, so this won't be a problem?
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
bruce2359
PostPosted: Wed Jun 03, 2009 6:11 pm    Post subject: Reply with quote

Poobah

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

Out of curiosity, what was the ReasonCode in the DLH? Why was the message in the DLQ?
_________________
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
murdeep
PostPosted: Wed Jun 03, 2009 8:02 pm    Post subject: Reply with quote

Master

Joined: 03 Nov 2004
Posts: 211

bruce2359 wrote:
Out of curiosity, what was the ReasonCode in the DLH? Why was the message in the DLQ?

65536 - its a broker exception. In this case a network issue caused a d/b to be unavailable to the flow and the message was backed out and eventually moved to SDLQ where the runmqdlq moved it to a broker exception queue.

Typically these messages are simply replayed when the root cause is resolved.
Back to top
View user's profile Send private message
murdeep
PostPosted: Wed Jun 03, 2009 8:09 pm    Post subject: Reply with quote

Master

Joined: 03 Nov 2004
Posts: 211

PeterPotkay wrote:
murdeep wrote:

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.


"however the msg flow expects the message in z/OS encoding/CCSID"

What if you change the sending app to leave the MQMD_Format field blank? Nothing will be able to convert the message, including the DLQ handler. But you are saying your receiving app expects the message unconverted, even when being handed the message directly by the QM via the regular queue, so this won't be a problem?


Unfortunately the broker expects it in EBCDIC but the end point app expects it in ASCII so the message format must be set to MQSTR.

The reason why the broker expects it in EBCDIC is because the flow was written to insert EBCDIC characters to delimit records sent from a z/OS via a file to msg adapter to ensure the end point app can process each record by looking for a LF character. Ideally I'd like to change the flow to do a get with convert and insert an ASCII LF but the flow is not under my authority to change so that isn't going to happen. This is the politics I mentioned before.
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Wed Jun 03, 2009 8:13 pm    Post subject: Reply with quote

Grand High Poobah

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

Remind the politicians in question that MQ and the broker are meant to decouple or loosely couple applications that were before tightly coupled.

Concretely this means that the MF should no longer have to worry about the application reading the message as the message will be transformed by the broker to suit the consumer application's needs....


_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
aditya.aggarwal
PostPosted: Wed Jun 03, 2009 10:45 pm    Post subject: Reply with quote

Master

Joined: 13 Jan 2009
Posts: 252

murdeep wrote:
Quote:
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.


It is converting to 546/437 because MQGMO_CONVERT is present in runmqdlq code.


murdeep wrote:

Quote:
Unfortunately the broker expects it in EBCDIC but the end point app expects it in ASCII so the message format must be set to MQSTR.

The reason why the broker expects it in EBCDIC is because the flow was written to insert EBCDIC characters to delimit records sent from a z/OS via a file to msg adapter to ensure the end point app can process each record by looking for a LF character. Ideally I'd like to change the flow to do a get with convert and insert an ASCII LF but the flow is not under my authority to change so that isn't going to happen. This is the politics I mentioned before.


Ideally Your flow should use MQGMO_CONVERT while reading the message from the queue as this is the best practise. But according to you it is not possible to change the message flow then use MQGMO_NONE inplace of MQGMO_CONVERT at runmqdlq code. Even if this does not resolve the issue, stop sending the message in to your DLQ to avoid the politics.

Cheers,
Aditya
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Thu Jun 04, 2009 5:19 am    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7723

murdeep wrote:
PeterPotkay wrote:
murdeep wrote:

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.


"however the msg flow expects the message in z/OS encoding/CCSID"

What if you change the sending app to leave the MQMD_Format field blank? Nothing will be able to convert the message, including the DLQ handler. But you are saying your receiving app expects the message unconverted, even when being handed the message directly by the QM via the regular queue, so this won't be a problem?


Unfortunately the broker expects it in EBCDIC but the end point app expects it in ASCII so the message format must be set to MQSTR.


So can the mainframe send the message with MQMD_Format set to none, and when the Broker sends out the message to the end point, the Broker sets the MQMD_Format to "MQSTR ".

Or is the Broker flow coded to copy the incoming MQMD to the outgoing one, so this is a change that you can't make happen?
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
vol
PostPosted: Thu Jun 04, 2009 6:12 am    Post subject: Reply with quote

Acolyte

Joined: 01 Feb 2009
Posts: 69

I think that runmqdlq converts the msg when reading it from the DLQ because the original destination qmgr and queue are held in the DLH header, which may be in a different CCSID to the qmgr's.
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Thu Jun 04, 2009 8:44 pm    Post subject: Reply with quote

Grand High Poobah

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

When using the forwarding rule did you set header(no) ? If you kept the DLQ header you will not have the same CCSID as the payload but you will have the right CCSID on the DLH for the information about the next part of the message...
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic  Reply to topic Goto page Previous  1, 2, 3 Page 3 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.