Thanks for your responses.

Q: Why not setup your consumer before you start up your camel context?

At the moment we prepare our context:

                CamelContext context = new DefaultCamelContext();
                context.addComponent(JMS_QUEUE_COMPONENT_NAME, new 
JmsComponent(new JmsConfiguration(JmsFactory.getQueueConnectionFactory())));
                context.addComponent(JMS_TOPIC_COMPONENT_NAME, new 
JmsComponent(new JmsConfiguration(JmsFactory.getTopicConnectionFactory())));

Apply a route builder:

                String requestRouteUri = 
CamelHelper.buildQueueRouteUri(ServiceFactory.getRequestQueue());
                String responseRouteUri = 
CamelHelper.buildTopicRouteUri(ServiceFactory.getResponseTopic());
                String logRouteUri = CamelHelper.buildLogRouteUri(LOGGER, 
LoggingLevel.TRACE);

                
from(requestRouteUri).to(logRouteUri).process(engineProcessor).to(logRouteUri).to(responseRouteUri);
                
from(responseRouteUri).to(logRouteUri).process(messageTranslator).to(logRouteUri).process(engineProcessor);

Call start and Camel does its magic.  We could start our consumer outside of 
Camel and then insert into the context, but then we are doing work outside of 
Camel and lose some of the elegance.  It would be nice if we could handle this 
use case entirely within Camel, I also would have thought our use case is 
fairly typical (state of the world from the DB with updates via messaging), 
might we possibly create a new EIP to handle this situation or is that 
ridiculous?

Q: Could a better solution be to use durable subscriptions or ActiveMQ virtual 
topics so you're not depending on the timing of your consumer starting up as 
the basis for not missing messages?

We have an arbitrary number of clients who come and go as they please so I 
don't see durable subscriptions working that well, however, I think this could 
work.  Nevertheless, I would note that our current approach is relatively 
simple and works perfectly, it is purely implementing this approach in Camel 
with which we have had trouble.  Ideally, I think we would not have to tweak 
our architecture in order to adopt Camel.

From: ceposta [via Camel] [mailto:ml-node+s465427n5737003...@n5.nabble.com]
Sent: Thursday, August 08, 2013 8:37 AM
To: Gizejewski, Mark
Subject: Re: Creating then starting a JMS consumer around another component

Could a better solution be to use durable subscriptions or ActiveMQ virtual
topics so you're not depending on the timing of your consumer starting up
as the basis for not missing messages?


On Wed, Aug 7, 2013 at 6:43 PM, John D. Ament <[hidden 
email]</user/SendEmail.jtp?type=node&node=5737003&i=0>>wrote:

> Hi,
>
> Why isn't 2,1,3 possible?
> Why not setup your consumer before you start up your camel context?
>
> On Wed, Aug 7, 2013 at 7:22 PM, markgize <[hidden 
> email]</user/SendEmail.jtp?type=node&node=5737003&i=1>>
> wrote:
> > We are interested in Camel but have a specific startup sequence that we
> need
> > to follow:
> >
> > 1) Open a JMS topic consumer for our updates, but, do not get any of the
> > messages.
> > 2) Query our database and build a state of the world
> > 3) Start to get the update messages from the consumer we opened
> >
> > We cannot adopt 2, 1, 3, as during the time we are done with our query
> but
> > are still constructing the state of the world, we might miss an update.
>  1,
> > 3, 2, is also a problem as an update could present an object which our
> state
> > of the world subsequently tries to build, resulting in a duplicate.  We
> > could endeavor to handle this duplicate, but it is powerful to load the
> bulk
> > of our data in the state of the world phase and demand absolutely no
> > exceptions.
> >
> > What we have currently implemented can also result in duplicates.  The
> state
> > of the world might contain an object which an update then subsequently
> > provides, but in this case we merely reject just one update, as opposed
> to
> > having an issue with the much more significant state of the world
> operation.
> >
> > How can we achieve 1, 2, 3 using Camel?  The difficulty that I see is
> that
> > our consumer must be receiving messages, however, it must not consume
> them
> > until the state of the world completes.
> >
> > Thanks for your time.
> >
> >
> >
> > --
> > View this message in context:
> http://camel.465427.n5.nabble.com/Creating-then-starting-a-JMS-consumer-around-another-component-tp5736955.html
> > Sent from the Camel - Users mailing list archive at Nabble.com.
>



--
*Christian Posta*
http://www.christianposta.com/blog
twitter: @christianposta
http://www.christianposta.com/blog

________________________________
If you reply to this email, your message will be added to the discussion below:
http://camel.465427.n5.nabble.com/Creating-then-starting-a-JMS-consumer-around-another-component-tp5736955p5737003.html
To unsubscribe from Creating then starting a JMS consumer around another 
component, click 
here<http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5736955&code=bWFyay5naXplamV3c2tpQHBpbWNvLmNvbXw1NzM2OTU1fC0xODE4MjkzMjc0>.
NAML<http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>

This message contains confidential information and is intended only for the 
individual named. If you are not the named addressee, you should not 
disseminate, distribute, alter or copy this e-mail. Please notify the sender 
immediately by e-mail if you have received this e-mail by mistake and delete 
this e-mail from your system. E-mail transmissions cannot be guaranteed to be 
secure or without error as information could be intercepted, corrupted, lost, 
destroyed, arrive late or incomplete, or contain viruses. The sender, 
therefore, does not accept liability for any errors or omissions in the 
contents of this message which arise during or as a result of e-mail 
transmission. If verification is required, please request a hard-copy version. 
This message is provided for information purposes and should not be construed 
as a solicitation or offer to buy or sell any securities or related financial 
instruments in any jurisdiction.




--
View this message in context: 
http://camel.465427.n5.nabble.com/Creating-then-starting-a-JMS-consumer-around-another-component-tp5736955p5737004.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to