Author |
Message
|
j.f.sorge |
Posted: Wed Feb 27, 2008 1:30 am Post subject: Copy OutputMessage (incl Headers) put with default context |
|
|
Master
Joined: 27 Feb 2008 Posts: 218
|
Hallo all!
We have to store the original message put via MQOutputNode if messages go to an external partner. As we create new messages I configured the MQOutputNode with the following parameters
Transaction Mode = automatic
Persistence Mode = asQdef
New message ID = true
New correlation ID = false
Segmentation allowed = true
Message context = default
Destination Mode = Destination List
To store the original output message I used the LocalEnvironment to set two queue names to the DestinationList (which will be used by the MQOutputNode).
My problem is that these two messages get (at least) different message IDs. This should not happen in my case as I need the original header values which will be created by MQ when putting the message with default context.
Is there any solution to keep all the headers / get the complete message updated after the MQOutputNode has put the message. Than I could use the OutputNode of the MQOutputNode to put the message with a second MQOutputNode using Message context = pass all.
Thanks in advance for the help! |
|
Back to top |
|
 |
Gaya3 |
Posted: Wed Feb 27, 2008 1:38 am Post subject: |
|
|
 Jedi
Joined: 12 Sep 2006 Posts: 2493 Location: Boston, US
|
Hi
I guess you are constructing the output message twice in your compute node isn't it.
Regards
Gayathri _________________ Regards
Gayathri
-----------------------------------------------
Do Something Before you Die |
|
Back to top |
|
 |
j.f.sorge |
Posted: Wed Feb 27, 2008 1:45 am Post subject: |
|
|
Master
Joined: 27 Feb 2008 Posts: 218
|
Hi!
I only create one message once and use a ComputNode to set the LocalEnvironment for the MQOutputNode. The MQOutputNode uses the DestinationList to put the message to two queues - one is the output queue, the other one is the queue which should store the message put to the output queue. |
|
Back to top |
|
 |
Vitor |
Posted: Wed Feb 27, 2008 1:55 am Post subject: Re: Copy OutputMessage (incl Headers) put with default conte |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
j.f.sorge wrote: |
My problem is that these two messages get (at least) different message IDs. This should not happen in my case as I need the original header values which will be created by MQ when putting the message with default context. |
Working as designed and as desired. If you want the msg id passed through then set the MQOutput node "New message Id" to false, which will (obviously enough) cause a new msg id not to be generated on put.
If it was me (and it's not) I'd like the 2 messages to have different ids, and use the input message id as a correlation id to tie them together. But that's a personal view & might not meet your needs. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
Vitor |
Posted: Wed Feb 27, 2008 1:56 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
Gaya3 wrote: |
I guess you are constructing the output message twice in your compute node isn't it.
|
Unlikely; there's no mention of propogate & the MQOutput node will blow if you give it a double tree. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
Gaya3 |
Posted: Wed Feb 27, 2008 2:17 am Post subject: |
|
|
 Jedi
Joined: 12 Sep 2006 Posts: 2493 Location: Boston, US
|
Hi
Yes, Vitor, you are correct, thanks...
Regards
Gayathri _________________ Regards
Gayathri
-----------------------------------------------
Do Something Before you Die |
|
Back to top |
|
 |
j.f.sorge |
Posted: Wed Feb 27, 2008 2:28 am Post subject: Re: Copy OutputMessage (incl Headers) put with default conte |
|
|
Master
Joined: 27 Feb 2008 Posts: 218
|
Vitor wrote: |
...
If you want the msg id passed through then set the MQOutput node "New message Id" to false, which will (obviously enough) cause a new msg id not to be generated on put.
... |
If I disable create New Message ID feature it will create a new Group ID as I enabled Segmentation allowed. This will lead to different message headers.
Is there any other solution than creating an Exit to store messages in a message warehouse? Any solution you could implement in a flow? |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Feb 27, 2008 2:34 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
You have complete control over the MQMD.
All you have to do is write the code to produce the MQMD you want. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
j.f.sorge |
Posted: Wed Feb 27, 2008 2:48 am Post subject: |
|
|
Master
Joined: 27 Feb 2008 Posts: 218
|
jefflowrey wrote: |
You have complete control over the MQMD.
All you have to do is write the code to produce the MQMD you want. |
Yes, it's clear to me that I can change each field in MQMD and put the message with the changed values. But I want MQ to generate the fields automatically (because of security issues) and store the complete message with generated fields to a second queue. It would not help me to change only some values as I don't know what MQ will put by itself. |
|
Back to top |
|
 |
Vitor |
Posted: Wed Feb 27, 2008 2:56 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
j.f.sorge wrote: |
But I want MQ to generate the fields automatically (because of security issues) and store the complete message with generated fields to a second queue. |
Security issues??
So you want WMB to ignore the setting of the MQOutput node & not generate a new msg id? Some people would call that a bug!
IMHO your requirements for the MQMD are beyond the scope of what can be done with a mouse click, and you need to write code to generate the MQMD you want. Which I still think is not what you think you want.
What security issues?  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
j.f.sorge |
Posted: Wed Feb 27, 2008 3:16 am Post subject: |
|
|
Master
Joined: 27 Feb 2008 Posts: 218
|
Vitor wrote: |
j.f.sorge wrote: |
But I want MQ to generate the fields automatically (because of security issues) and store the complete message with generated fields to a second queue. |
Security issues??
So you want WMB to ignore the setting of the MQOutput node & not generate a new msg id? Some people would call that a bug!
IMHO your requirements for the MQMD are beyond the scope of what can be done with a mouse click, and you need to write code to generate the MQMD you want. Which I still think is not what you think you want.
What security issues?  |
I don't know which userId the broker runs on (since there are different users for our deployment systems) and this is why I cannot generate the MQMD by myself.
I am getting nearer to a solution but I have to discuss it with my collegues first. I will have a SubFlow which contains the following Nodes:
InputNode -> MQOutputNode putting with default context and new message / correlation ID -> ComputeNode which gets the generated IDs from LocalEnvironment and sets these IDs to the OutputRoot.MQMD -> second MQOutputNode putting with default context WITHOUT generating new IDs (using the one set before)
I hope that this works as it should... |
|
Back to top |
|
 |
j.f.sorge |
Posted: Wed Feb 27, 2008 3:37 am Post subject: |
|
|
Master
Joined: 27 Feb 2008 Posts: 218
|
j.f.sorge wrote: |
...
I am getting nearer to a solution but I have to discuss it with my collegues first. I will have a SubFlow which contains the following Nodes:
InputNode -> MQOutputNode putting with default context and new message / correlation ID -> ComputeNode which gets the generated IDs from LocalEnvironment and sets these IDs to the OutputRoot.MQMD -> second MQOutputNode putting with default context WITHOUT generating new IDs (using the one set before)
... |
Got nearer but it does not work, too!
Now there are different PutTimeStamps (as I put in two MQOutputNodes) and the GroupID of the messages differ (as I put the messages with Segmentation allowed).
Isn't there any solution to get the changed message headers back to the broker (after the MQOutputNode) as you get these updated values in IBM MQ Java Native API?! |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Feb 27, 2008 4:10 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
The MQOutput node does have an out terminal... _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
j.f.sorge |
Posted: Wed Feb 27, 2008 4:14 am Post subject: |
|
|
Master
Joined: 27 Feb 2008 Posts: 218
|
jefflowrey wrote: |
The MQOutput node does have an out terminal... |
But the message headers after MQOutputNode contain the original header values from the message going into the MQOutputNode. |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Feb 27, 2008 4:18 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
|
Back to top |
|
 |
|