+1

Sent from a mobile device
Am 12.09.2012 19:44 schrieb "Pontus Ullgren" <ullg...@gmail.com>:

> Hello,
>
> The way you see it behave is the way it should behave. If you have
> competing consumers on a queue they will consume messages in that way.
>
> If I interpreted your requirement correctly you have messages from a#
> that can only be consumed by c# and messages from b# that can only be
> consumed by d#.
> In that case you should really use two different queues for this one
> between each pair of producer and consumer.
>
> Adding extra queues in activemq is simple and very low cost when it
> comes to resources. So I would advice you to solve it this way.
>
> If you for some reason still want to use one queue (legacy, crazy
> customer requirement or let's say that you are building a example for
> bad architecture ;-P) then you can set a header on the messages in the
> producer and then use a selector in the consumer. See the
> documentation on the Camel JMS component[1] and the JMS component unit
> test.
>
> But again: Use two queues.
>
> [1] http://camel.apache.org/jms.html
> [2]
> https://svn.apache.org/repos/asf/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSelectorTest.java
> Best regards
> Pontus Ullgren
>
>
> On Wed, Sep 12, 2012 at 7:18 PM, garrydias <garryd...@gmail.com> wrote:
> > Dear friends
> >
> > I´m facing the folowing problem: I have 2 producers systems sending
> messages
> > to 1 jms queue that is consumed by 2 consumers systems. Ignore the VM
> where
> > they are.
> >
> > #a) a producerSystem_1.war has the folowing camelContext:
> >
> > <camelContext id="producerSystem-1-camelContext">
> >   ...
> >   <route>
> >     <from uri="direct:whatever" />
> >     <to uri="activemq:common_queue" />
> >   </route>
> >   ...
> > </camelContext >
> >
> >
> > #b) a producerSystem_2.war has the folowing camelContext:
> >
> > <camelContext id="producerSystem-2-camelContext">
> >   ...
> >   <route>
> >     <from uri="direct:whatever" />
> >     <to uri="activemq:common_queue" />
> >   </route>
> >   ...
> > </camelContext >
> >
> >
> > #c) a consumerSystem_1.war has the folowing camelContext:
> >
> > <camelContext id="context_1">
> >   <route>
> >     <from uri="activemq:common_queue" />
> >     <to uri="bean:consumer_a" />
> >   </route>
> > </camelContext >
> >
> >
> > #d) a consumerSystem_2.war has the folowing camelContext:
> >
> > <camelContext id="context_2">
> >   <route>
> >     <from uri="activemq:common_queue" />
> >     <to uri="bean:consumer_b" />
> >   </route>
> > </camelContext >
> >
> >
> > The VM where these applications are running is not important.
> >
> > My *desired behavior *is:
> > - Messages produced in #a must consumed in c#
> > - Messages produced in #b must consumed in d#
> >
> > The *actual behavior* is:
> > - Messages produced in #a sometimes is consumed in c# and sometimes in d#
> > - Messages produced in #b sometimes is consumed in c# and sometimes in d#
> >
> > I understand that JMS endpoints were designed to execute in the *actual
> > behavior*. But in this case, I need to run *my desired *behavior.
> >
> > There´s a way to do this using correlationIds (not send/receive
> approach)?
> >
> > Thanx a lot
> >
> >
> >
> > --
> > View this message in context:
> http://camel.465427.n5.nabble.com/Using-correlationid-to-isolate-jms-queues-in-multiple-camelContexts-tp5719202.html
> > Sent from the Camel - Users mailing list archive at Nabble.com.
>

Reply via email to