Hi,

Did you try to use the multicast?

Here is the example codes of multicast , thread A will wait for the
response back and finishing the response aggregation.
// Router 1 to call the bank endpoints sequentially
from(Constants.LOANBROKER_URI)
    // Using the CreditScoreProcessor to call the credit agency service
    .process(new CreditScoreProcessor(Constants.CREDITAGENCY_ADDRESS))
        // Set the aggregation strategy on the multicast pattern
        .multicast(new BankResponseAggregationStrategy())
            // Send out the request the below three different banks
sequentially
            .to(Constants.BANK1_URI, Constants.BANK2_URI,
Constants.BANK3_URI);

// Router 2 to call the bank endpoints parallelly
from(Constants.PARALLEL_LOANBROKER_URI)
    .process(new CreditScoreProcessor(Constants.CREDITAGENCY_ADDRESS))
        // Using the thread pool to send out message to the below three
different banks parallelly
        .multicast(new BankResponseAggregationStrategy())
            // Camel will create a thread pool with the size of the send
to endpoints
            // for sending the message parallelly
            .setParallelProcessing(true)
            .to(Constants.BANK1_URI, Constants.BANK2_URI,
Constants.BANK3_URI);

You can find more information about this loan broker example here[1]

[1] http://activemq.apache.org/camel/loan-broker-example.html


Willem


GLD wrote:
> I didn't see this property. 
> By the way, the setter is JmsConfiguration.setReplyTo().
> ==> 
>   <to
> uri="jms:queue:${request.queue}?replyToDestination=queue:${reply.queue}"/>
> Fails
>   <to uri="jms:queue:${request.queue}?replyTo=queue:${reply.queue}"/>  is
> OK.
> 
> =====
> And just for my personal knowledge, In an InOut Pattern, consuming a message
> (in thread A), how do you 
>   - send 2 Messages (InOut) at the same time
>   - make the Thread A wait for the 2 responses  
>   - continue the initial route
>                                 
>                                 send request       receive reply
>           thread A           /------------  ..... -----------\     aggregate
> responses 
>    ==> Endpoint ------<                                          
>> ---------------------- ..... continue
>                                 \------------  ..... -----------/
> 
> or  
>                                
>           thread A         Send Asynch        Wait for the 2          
> aggregate 
>    ==> Endpoint ------   Req 1 &2   ----- asynch Responses -- responses
> --------- ..... continue 
> 
> 
> Regards
> 
> 
> willem.jiang wrote:
>> +1 for Christian's solution.
>> For the WS the communication model is a request/response, so the message
>> exchange pattern is InOut. Current camel jms component does not only
>> support InOnly pattern, but also support InOut pattern.
>>
>> Willem
>>
>> Christian Schneider wrote:
>>> Your config looks extremely complex.
>>>
>>> Shouldn´t a simple
>>>
>>> <from uri="direct:myEndpoint"/>
>>> <to
>>> uri="jms:queue:${request.queue.jndi-name}?replyToDestination=queue:${reply.queue.jndi-name}"/>
>>>
>>>
>>> suffice?
>>>
>>> As far as I know it will do a nice request / reply with correlation id
>>> processing.
>>>
>>> Greetings
>>>
>>> Christian
>>>
>>> GLD schrieb:
>>>> Hi, I try to implement the following use case
>>>>
>>>> A Direct-endpoint consumes data     ==> request data is sent the
>>>> request via JMS in queue "requestQueue" AND the reply is expected on
>>>> the queue "responseQueue"        ==> The reply is then sent back tot
>>>> the direct-endpoint
>>>>
>>>>
>>>> I tried to   add a correlationID to the request=)
>>>>   use a multicast tag (to send the JMS message) and to prepare a join
>>>> point
>>>> for the reply. In the second exchange, I set the header 'isReply' to
>>>> false.
>>>> In the route consuming the JMS reply from queue "responseQueue", I set
>>>> the
>>>> header 'isReply' to 'true'  (so 1 has isReply to true and the other to
>>>> false).
>>>> I tried to use an aggregator to join both exhanges above sending them
>>>> to the
>>>> same direct endpoint.
>>>>   The matching is done via the JMScorrelationID
>>>>   The choice is done by a custom strategy (The Selected exchange is
>>>> the one
>>>> where 'isReply = true'
>>>>
>>>> (see route file attached
>>>> http://www.nabble.com/file/p20900905/applicationContext-business-camel-route.xml
>>>>
>>>> applicationContext-business-camel-route.xml
>>>>
>>>> ... But it doesn't work.
>>>>   My expected "join point" doesn't wait for the reply.... and the
>>>> request is
>>>> sent back to the "Direct-endpoint":-(
>>>>  
>>>>
>>>> What is the good solution to make the thread that process the original
>>>> message wait for a message processed by another thread?
>>>>
>>>> NB : One of my requirements is to use 2 queues. I did it with 1 queue
>>>> (InOut) and it works fine.=)
>>>>
>>>> Regards
>>>>
>>>>   
>>>
>>
>>
> 

Reply via email to