Author |
Message
|
umaneesh |
Posted: Mon Apr 13, 2009 1:23 am Post subject: Carrrying over Correl Id across msgflows |
|
|
Novice
Joined: 13 Apr 2009 Posts: 24
|
Hi,
I have to capture requestor/client's [b]Correlation ID [/b]and keep the same across IBM message broker V6 msg flows (i.e request msg passes thru several flows).
This is how it looks like:
Requestor msg ---> Msgflow1 (msg transformed and sent to msgflow2) ---> Msgflow2 (msg again transformed and sent to msgflow3) ---> Msgflow3(which sends an ACK back to requestor with [b]Correlation ID[/b]).
Here, requestor is expecting the same correlation ID to be passed in all the flows, then retrive same ID in ACK. What is the way to have same correlation ID in all. This architecture has different physical formats(msgs) in each msg flows.
SET OutputRoot.MQMD.CorrelId = InputRoot.MQMD.CorrelId; ---> this wont help me as I have some msgflows coming in which I do not have access!
Appreciate your thoughts on this!
Thanks
Maneesh |
|
Back to top |
|
 |
Vitor |
Posted: Mon Apr 13, 2009 1:26 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
Store it in the usr folder of an RFH2 _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
umaneesh |
Posted: Mon Apr 13, 2009 1:37 am Post subject: Carrrying over Correl Id across msgflows |
|
|
Novice
Joined: 13 Apr 2009 Posts: 24
|
[quote="Vitor"]Store it in the usr folder of an RFH2[/quote]
Thank you for the quick response.
I have a restriction to use MQRFH/RFH2 as the intermediary(client service) flows have limitations.
I remember, I took out all the user headers when I used to carry application uniqueID and put them in payload itself. In this case, I am not suppose to make any changes to payload also.
Hope, I am in the right direction!
Thanks
Maneesh |
|
Back to top |
|
 |
Vitor |
Posted: Mon Apr 13, 2009 2:11 am Post subject: Re: Carrrying over Correl Id across msgflows |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
umaneesh wrote: |
I have a restriction to use MQRFH/RFH2 as the intermediary(client service) flows have limitations.
I remember, I took out all the user headers when I used to carry application uniqueID and put them in payload itself. In this case, I am not suppose to make any changes to payload also. |
So you can't use RFH2, removed the headers and you can't change the payload....?
umaneesh wrote: |
Hope, I am in the right direction! |
If the right direction is the road to doom, then yes.
If you can't store it in the payload, an RFH2, a header or the memory (as you have several different flows so the session will change) then you'll need to think about some kind of external database, keyed on I don't know what....!
This will have perfomance implications. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
umaneesh |
Posted: Mon Apr 13, 2009 3:11 am Post subject: Carrrying over Correl Id across msgflows |
|
|
Novice
Joined: 13 Apr 2009 Posts: 24
|
|
Back to top |
|
 |
mqjeff |
Posted: Mon Apr 13, 2009 3:15 am Post subject: Re: Carrrying over Correl Id across msgflows |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
umaneesh wrote: |
Vitor, as you said, the only feasible way here is to use some database functionalities |
A necessary part of this, by the way, is that even those flows that "you don't have access to" will provide some means for you to know what message it is that they produce on output. That is, if you "don't have access" to flow 2, you need to know that when you get a message in flow 3 that it is "the same" as some message you saw in flow 1.
So you may have to spend some time figuring out the exact correct information to use to correlate messages so you can update the correlation ID. |
|
Back to top |
|
 |
umaneesh |
Posted: Mon Apr 13, 2009 3:43 am Post subject: Re: Carrrying over Correl Id across msgflows |
|
|
Novice
Joined: 13 Apr 2009 Posts: 24
|
Quote: |
if you "don't have access" to flow 2, you need to know that when you get a message in flow 3 that it is "the same" as some message you saw in flow 1. |
the msg coming from flow 2 is different from flow 1. Say I have an XML msg in flow 1 and the msg coming out from flow 2 is swift with different fields.
Quote: |
figuring out the exact correct information to use to correlate messages so you can update the correlation ID. |
the requirement is to have the same Id, not to touch any Unique ID's in payload! Infact I have a ref# passes everywhere. I have to ask them to reconsider this... |
|
Back to top |
|
 |
mqjeff |
Posted: Mon Apr 13, 2009 4:47 am Post subject: Re: Carrrying over Correl Id across msgflows |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
umaneesh wrote: |
Quote: |
if you "don't have access" to flow 2, you need to know that when you get a message in flow 3 that it is "the same" as some message you saw in flow 1. |
the msg coming from flow 2 is different from flow 1. Say I have an XML msg in flow 1 and the msg coming out from flow 2 is swift with different fields |
Yes. That's why I said "the same" with the quotes. Suppose you send three XML messages into Flow 2, and you get three SWIFT messages out of it. How do you know which SWIFT is associated with which XML message? That's what you have to know, in order to be able to re-attach the correct CorrelationID.
Ideally, you wouldn't have to do *anything*, because message flows that do not do request/reply scenarios and merely do transformations should not be changing message id's or correlation id's at all. |
|
Back to top |
|
 |
|