Author |
Message
|
Partha.Baidya |
Posted: Fri Apr 23, 2010 4:06 am Post subject: Aggregating messages form MQ and SOAP Request Node |
|
|
 Voyager
Joined: 05 Nov 2009 Posts: 97
|
Hi,
Is it possible to use the Aggregate nodes with a mix of MQ and SOAP requests?
The first aggregation will have request/response with MQ transport and second aggreation will have request/reponse with SOAP transport.
How is it possible to collect replies from MQ and SOAP request node and combines them into a single compound message?
Below is an outline of what I want to achieve, is this possible?
Code: |
Request flow:
/--> compute --> MQOutput --> AggregateRequest
MQInput --> AggregateControl --
\--> compute --> SOAPRequest --> AggregateRequest
Response flow:
MQInput --\
--> AggregateReply --> Compute --> MQOutput
|
I tried a sample project but the code is having problem aggregating the response message comes from the SOAP request message.
The documentation says
Code: |
If you want to correlate initial request messages with their combined response messages, you can do so using the ReplyIdentifier in the Properties folder of the response message.
|
But I thing for SOAP message there wont be any ReplyIdentifier.
Have any body worked with this kind of senario..?
Please guide me how to combine the aggreation from MQ node and SOAP node.
Regards,
Partha |
|
Back to top |
|
 |
mqjeff |
Posted: Fri Apr 23, 2010 4:13 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
SOAPRequest is *synchronous*.
You also can't really use the Aggregate nodes with anything that is not using MQ.
Two choices:
request flow:
MQInput->compute->MQOutput
response flow:
MQinput->compute->SOAPRequst->Compute->MQOutput
OR
do what you already show but wrap SOAPRequest in MQInput/MQOutput.
If you need to do the two requests in parallel, the second is the better choice. |
|
Back to top |
|
 |
Partha.Baidya |
Posted: Fri Apr 23, 2010 5:31 am Post subject: |
|
|
 Voyager
Joined: 05 Nov 2009 Posts: 97
|
Hi,
Thanks for your suggestion.
Actully I want a solution wherein I do not want to wrap SOAP Request node with MQInput/MQOutput.
Is there any way so that I can combine the SOAP response along with MQ response after the AggregateReply Node without using MQInput/Output wrapper with SOAP resoonse?
Regards,
Partha |
|
Back to top |
|
 |
harish_td |
Posted: Mon Apr 26, 2010 6:15 pm Post subject: |
|
|
Master
Joined: 13 Feb 2006 Posts: 236
|
|
Back to top |
|
 |
mqjeff |
Posted: Tue Apr 27, 2010 3:58 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
You don't need aggregation or correlation to combine a single MQ message with the output of a single SOAPRequest.
SOAPRequest is *synchronous*! |
|
Back to top |
|
 |
mqseries0209 |
Posted: Wed Apr 28, 2010 5:50 am Post subject: |
|
|
 Voyager
Joined: 30 Mar 2006 Posts: 90
|
Your requirement can be done ...
I have used MQ and FileNodes with aggregate nodes.
All you have to do is make sure you create a localEnvironment tree with replyidentifier if it does not exist, its a tree and you can manually create it. In our case the replyidentifier was file name (as blob) which was unique.
And when we recieve response, the same file name is converted and read as correlationID/replyidentifier and the responses are correlated.
basic idea is there should be some identifier for each aggregateRequest propgated, that can be read again and set as correlationID/identifier in response ..
Sorry if Iam not clear enough, but this should give you an Idea to start with. _________________ IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Integration Developer V6.0 |
|
Back to top |
|
 |
mqjeff |
Posted: Wed Apr 28, 2010 7:05 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
The requirement can be done WITHOUT USING AGGREGATION AT ALL. There's no reason to fake up something to add in aggregation unnecessarily.
The only times you need aggregation are when you have multiple asynchronous request/response processes or when you need to execute several operations in parallel and combine the results.
That is not the case here.
That is not the case when combining a single file with a single MQ request/response. |
|
Back to top |
|
 |
skidewd |
Posted: Mon May 03, 2010 12:38 pm Post subject: |
|
|
 Novice
Joined: 20 Mar 2010 Posts: 12
|
mqjeff wrote: |
You don't need aggregation or correlation to combine a single MQ message with the output of a single SOAPRequest.
SOAPRequest is *synchronous*! |
may not be relevant for this particular scenario, but Broker does provide a pair of AsyncSOAPRequest/AsyncSOAPResponse nodes if you want to make SOAP using async invocation pattern... |
|
Back to top |
|
 |
ovasquez |
Posted: Wed Dec 01, 2010 4:47 pm Post subject: |
|
|
 Centurion
Joined: 09 Dec 2005 Posts: 141 Location: Lima, Peru
|
skidewd wrote: |
mqjeff wrote: |
You don't need aggregation or correlation to combine a single MQ message with the output of a single SOAPRequest.
SOAPRequest is *synchronous*! |
may not be relevant for this particular scenario, but Broker does provide a pair of AsyncSOAPRequest/AsyncSOAPResponse nodes if you want to make SOAP using async invocation pattern... |
AsyncSOAPRequest/AsyncSOAPResponse nodes work only when WS support WS-addressing, so is not for ALL WS.  _________________ Oscar Vásquez Flores |
|
Back to top |
|
 |
Hugh_Everett |
Posted: Tue Dec 09, 2014 8:43 am Post subject: Do the above still apply in December 2014 (IIB V9.0.0.2) |
|
|
 Novice
Joined: 08 Jul 2001 Posts: 19 Location: Manchester, UK
|
Given the age of the original post, and the original replies, can I please ask whether anything has changed in the past 4 years or whether the above comments still hold true ?
Essentially I'm asking: is it still the case that Aggregation only really "works" with MQ i/o ? And so if I want to aggregate the responses from two separate SOAP/HTTP WebService calls, I have to wrap them up in MQ i/o ?
In other words instead of this:
Code: |
REQUEST FLOW
/--> compute --> SOAPAsyncRequest1 --> AggregateRequest
SOAPInput --> AggregateControl --
\--> compute --> SOAPAsyncRequest2 --> AggregateRequest
RESPONSE FLOW
SOAPAsyncResponse1 --\
--> AggregateReply --> Compute --> SOAPReply
SOAPAsyncResponse2 --/
|
I ought to do this:
Code: |
REQUEST FLOW
/--> compute --> MQOutput(Rqs1) --> AggregateRequest
SOAPInput --> AggregateControl --
\--> compute --> MQOutput(Rqs2) --> AggregateRequest
INTERIM FLOW1
MQInput(Rqs1) --> SOAPRequest1 --> MQOutput(Rsp1)
INTERIM FLOW2
MQInput(Rqs2) --> SOAPRequest2 --> MQOutput(Rsp2)
RESPONSE FLOW
MQinput(Rsp1) --\
--> AggregateReply --> Compute --> SOAPReply
MQinput(Rsp2) --/
|
_________________ Hugh Everett
Manchester, UK |
|
Back to top |
|
 |
mqjeff |
Posted: Tue Dec 09, 2014 8:56 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
You could merely wire the two AsyncResponse flows to a Collector node.
Code: |
REQUEST FLOW
/--> compute --> SOAPAsyncRequest1
SOAPInput --> --
\--> compute --> SOAPAsyncRequest2
RESPONSE FLOW
SOAPAsyncResponse1 --\
--> collector--> Compute --> SOAPReply
SOAPAsyncResponse2 --/
|
But that's because you're already doing async soap requests.
If you had to do it with Sync Soap Requests, then you'd use Aggregation, and probably have to use MQ for the aggreation stuff. (because of transactionality) |
|
Back to top |
|
 |
Hugh_Everett |
Posted: Tue Dec 09, 2014 9:04 am Post subject: |
|
|
 Novice
Joined: 08 Jul 2001 Posts: 19 Location: Manchester, UK
|
Thanks for that comment. I shall look at a Collector node as well. (I have also found some trickiness 'cos I am using Mapping nodes instead of the Compute nodes I show below, and the Local.Environment.ComIbmAggregateControlNode structure seems to be being discarded as a message passes through the Mapping node ..... but that's another issue, which I'm still working on.) _________________ Hugh Everett
Manchester, UK |
|
Back to top |
|
 |
|