Hi *Chris / **Claus*, I have one *Inbound* queue,based on header and content type,I want forward to outbound queue. * Example 1: * * Inbound.queue name : **Inbound.Test.DDD Outbound.queue name : SOURHQueueName
* *Criteria or Condition : * Message property *PAST_EVENT_INTERVAL type* is : *0* *AND* Message *Type* value is : *card.test *or* card.expiry.test* *Example 2:* *Inbound.queue name : **Inbound.Test.SSS Outbound.queue name : WESTQueueName * *Criteria or Condition :* Message property *PAST_EVENT_INTERVAL type* is : *0* *AND * Message *Type *value *start with* :*card.event* I want achieve this using camel routing java DSL. Please help me.How can i use AND,OR and regular expression in camel routing *Regards* Prabu.N On Mon, Apr 1, 2013 at 7:43 PM, Chris Wolf [via Camel] < ml-node+s465427n5730166...@n5.nabble.com> wrote: > Hi Claus, > > Thanks for the response - I could not see any obvious way to configure > an FTP Consumer at ***runtime***, > either via bean, processor or consumer template. If you have a > concrete example, that would be great to see... > > ...otherwise, here's the solution I came up with: > > > -Chris > > > > // simulate incoming message from JMS... > from("timer:kickoff?repeatCount=1") > .to("direct:start"); > > // upon receipt of FTP config from JMS, invoke FtpConfigurer bean > to reconfigure > // FTP route, then start it... > from("direct:start") > .beanRef("configRdr") // config reader bean not shown here > .convertBodyTo(Document.class) > // sets a bunch of headers from DOM, e.g.: > > .setHeader("ftp-config.host").xquery("//remote[remoteId/@value='CBOE34']/server/@value", > > String.class) > .setHeader("ftp-route-id", constant("ftp.route")) > .beanRef("ftpConfigurer"); > > // FTP route will only be started by FtpConfigurer bean after it's > dynamically re-configured... > from("ftp://bogushost/bogusdir?startScheduler=false") // the URI > will be reconfigured... > .routeId("ftp.route").noAutoStartup() > .log("Received file ${file:onlyname}") > .to("file:/tmp/local/data"); > > public class FtpConfigurer { > public void configureFtpConsumer(Exchange exchange) throws Exception { > CamelContext context = exchange.getContext(); > Map<String, Object> headers = exchange.getIn().getHeaders(); > Map<String, Object> parameters = new HashMap<String, Object>(); > > // Filter headers for ftp-config specific headers... > for (Map.Entry<String, Object> entry : headers.entrySet()) { > String key = entry.getKey(); > if (key.startsWith("ftp-config.")) > parameters.put(key.substring("ftp-config.".length()), > entry.getValue()); > } > > String routeId = exchange.getIn().getHeader("ftp-route-id", > String.class); > Route ftpRoute = context.getRoute(routeId); > FtpConsumer c = (FtpConsumer) ftpRoute.getConsumer(); > FtpEndpoint<FTPFile> rfe = (FtpEndpoint<FTPFile>) c.getEndpoint(); > FtpConfiguration rfc = rfe.getConfiguration(); > > // Need to crack open FtpConsumer's "endpointPath" field since > // there's no mutator (setter) > Class<?> cls = c.getClass(); > Field endpointPath_fld = cls.getDeclaredField("endpointPath"); > endpointPath_fld.setAccessible(true); > endpointPath_fld.set(c, (String)parameters.get("directory")); > > // Need to crack open FtpEndpoint, actually DefaultEndpoint - > the ultimate base class > // since there's no mutator (setter) for the "endpointUri" field > cls = rfe.getClass(); > Field endpointUri_fld = null; > while (endpointUri_fld == null) { > // TODO: maybe change logic to just stop at > class=DefaultEndpoint > // rather then using NoSuchFieldException > try { > endpointUri_fld = cls.getDeclaredField("endpointUri"); > } catch (NoSuchFieldException nsfe) { > cls = cls.getSuperclass(); > } > } > endpointUri_fld.setAccessible(true); > endpointUri_fld.set(rfe, > String.format("ftp://%s/%s", > (String)parameters.get("host"), (String)parameters.get("directory"))); > > // set reference properties first as they use # syntax that > fools the regular properties setter > EndpointHelper.setReferenceProperties(context, rfc, parameters); > EndpointHelper.setProperties(context, rfc, parameters); > EndpointHelper.setReferenceProperties(context, rfe, parameters); > EndpointHelper.setProperties(context, rfe, parameters); > c.setStartScheduler(true); > > context.startRoute(routeId); > } > } > > On Mon, Apr 1, 2013 at 4:32 AM, Claus Ibsen <[hidden > email]<http://user/SendEmail.jtp?type=node&node=5730166&i=0>> > wrote: > > > Hi > > > > See this EIP > > http://camel.apache.org/content-enricher.html > > > > About pollEnrich. > > > > Though pollEnrich currently does support dynamic uris. Its on the > roadmap, > > for Camel 3.0. > > It requires an API change and thus isn't so easy to implement currently > on > > 2.x. > > > > You can always use a java bean / camel processor, and consume the ftp > file > > from java code. > > For example using consumer template. > > > > As you use FTP you may want to set disconnect=true so the connect is not > > remained open after usage. > > > > > > > > On Sun, Mar 31, 2013 at 7:51 PM, Chris Wolf <[hidden > > email]<http://user/SendEmail.jtp?type=node&node=5730166&i=1>> > wrote: > > > >> Ok, I'm starting to get it - a little bit. As for my concrete > >> example, so far, I have: > >> > >> from("direct:start") > >> .beanRef("config") > >> .convertBodyTo(Document.class) > >> .recipientList().xquery( > >> "concat('ftp://'" + > >> ",//remote[vendorId/@value='CBOE34']/server/@value" > + > >> > >> > >> > ",//remote[vendorId/@value='CBOE34']/param[name/@value='directory']/value/@value" > > >> + > >> ",'?noop=true&username='" + > >> > ",//remote[vendorId/@value='CBOE34']/username/@value" + > >> ",'&password='" + > >> > >> ",//remote[vendorId/@value='CBOE34']/password/@value)", String.class); > >> > >> Here's the problem - this will create an FTP Producer - that's not > >> what I need. I need a dynamically > >> constructed URI for a polling FTP consumer. I don't think > >> "recipientList" will work... Any ideas? > >> > >> Thanks, > >> > >> Chris > >> > >> On Sun, Mar 31, 2013 at 10:27 AM, Chris Wolf <[hidden > >> email]<http://user/SendEmail.jtp?type=node&node=5730166&i=2>> > wrote: > >> > Hi Claus, > >> > > >> > I hate to ask this - but I still don't get it. I thought > >> > "recipientList" was for sending to multiple, runtime-defined > >> > recipients. I don't see how this > >> > answers the question of sending to one, single recipient, whose URI > is > >> > dynamically constructed - and in my use-case the dynamic settings > >> > are not in properties - so "simple" (property place-holders) won't > help > >> me. > >> > > >> > Let me give you a concrete example. I need to do an ftp download and > >> > the connection information comes from up-stream in the route in the > >> > form of XML (DOM - a Document instance). Currently, I am trying to > do > >> > this with bean binding and method params decorated with @XPath > >> > pointing into the Document with the ftp settings and inside the > >> > this method doing: > >> > > >> > FtpComponent ftpComponent = context.getComponent("ftp", > >> FtpComponent.class); > >> > > >> > ..and then attempt to get the endpoint and call createConsumer(...). > >> > I'm sure this is not the right way to do it, but I don't see how else > >> > - any ideas? > >> > > >> > Thanks, > >> > > >> > > >> > Chris > >> > > >> > On Sun, Mar 31, 2013 at 2:28 AM, Claus Ibsen <[hidden > >> > email]<http://user/SendEmail.jtp?type=node&node=5730166&i=3>> > > >> wrote: > >> >> Hi > >> >> > >> >> See this FAQ > >> >> http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html > >> >> > >> >> > >> >> > >> >> > >> >> On Sun, Mar 31, 2013 at 5:22 AM, [hidden > >> >> email]<http://user/SendEmail.jtp?type=node&node=5730166&i=4> > >> >> <[hidden > >> >> email]<http://user/SendEmail.jtp?type=node&node=5730166&i=5>>wrote: > > >> >> > >> >>> Thanks Walzer.. > >> >>> * > >> >>> * > >> >>> *Queston1: > >> >>> > >> >>> * > >> >>> *Example* > >> >>> > >> >>> .when(header("foo").isEqualTo("bar")) > >> >>> .to("direct:b") > >> >>> > >> >>> In my case i have to add more than 80 condition and forwards to 80 > >> >>> different queues. > >> >>> > >> >>> Above example i can only hard-code queue name,But what i want is > below. > >> >>> > >> >>> * .when(header("Type").isNotNull()) > >> >>> .to("activemq.Inbound."+header("Type")) > >> >>> * > >> >>> > >> >>> Example:If queue type is test,It should forward to *Inbound.test* > >> queue. > >> >>> > >> >>> Above example i tried,but it did not worked,created queue something > >> >>> like this *Inbound.header("type")* > >> >>> > >> >>> *Question2*: > >> >>> > >> >>> from("direct:a") > >> >>> .multicast().to("direct:b", "direct:c", "direct:d"); > >> >>> > >> >>> Based on messages header and content type i want forward to > different > >> >>> queue. > >> >>> > >> >>> condition will be *OR *and *AND*.How can i do that like above > example.* > >> >>> * > >> >>> > >> >>> Thanks in advance* > >> >>> * > >> >>> > >> >>> *Regards* > >> >>> > >> >>> Prabu.N > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> On Sun, Mar 31, 2013 at 2:43 AM, Walzer, Thomas [via Camel] < > >> >>> [hidden email]<http://user/SendEmail.jtp?type=node&node=5730166&i=6>> > wrote: > >> >>> > >> >>> > Hi, > >> >>> > > >> >>> > you could start by reading Claus´ book (p. 44ff) which has a > perfect > >> >>> > example or http://camel.apache.org/content-based-router.html (just > > >> >>> > replace the direct: with your queues). > >> >>> > If you need to fire your messages to multiple queues: > >> >>> > http://camel.apache.org/publish-subscribe-channel.html shows you > the > >> >>> > various ways. > >> >>> > When you get the concepts you can just "lego" them together. > >> >>> > > >> >>> > Regards, Thomas. > >> >>> > > >> >>> > Am 30.03.2013 um 19:05 schrieb "[hidden email]< > >> >>> http://user/SendEmail.jtp?type=node&node=5730116&i=0>" > >> >>> > <[hidden email] < > >> http://user/SendEmail.jtp?type=node&node=5730116&i=1>>: > >> >>> > > >> >>> > > Hi Claus, > >> >>> > > > >> >>> > > Thanks so much Clus for help.It is working now. > >> >>> > > > >> >>> > > I need your guidance for the following requirement. > >> >>> > > > >> >>> > > 1.I have one *inbound queue* it will receive message frequently > >> from my > >> >>> > > application. > >> >>> > > 2.From *inbound queue* i need camel routing to move message > from > >> >>> > > another *message > >> >>> > > based inbound queue* based on message header value. > >> >>> > > 3.From *message based inbound queue *i* *need camel routing to > move > >> >>> > message > >> >>> > > to *one or more outbound queue *based on message content* > >> >>> > > * > >> >>> > > > >> >>> > > I need *camel java DSL*sample code for above requirement.* > >> >>> > > * > >> >>> > > * > >> >>> > > * > >> >>> > > *Thanks in advance* > >> >>> > > > >> >>> > > > >> >>> > > On Sat, Mar 30, 2013 at 3:10 PM, Claus Ibsen-2 [via Camel] < > >> >>> > > [hidden email] < > >> http://user/SendEmail.jtp?type=node&node=5730116&i=2>> > >> >>> > wrote: > >> >>> > > > >> >>> > >> Hi > >> >>> > >> > >> >>> > >> Do as the exception tells you. Check route 2. You route from > >> >>> > >> "Inbound.SSS.TestEvent". And that is now know to Camel. > >> >>> > >> > >> >>> > >> Maybe you need to add "activemq:" as prefix so its > >> >>> > >> "activemq:Inbound.SSS.TestEvent". > >> >>> > >> > >> >>> > >> > >> >>> > >> On Fri, Mar 29, 2013 at 7:01 PM, [hidden email]< > >> >>> > http://user/SendEmail.jtp?type=node&node=5730109&i=0> > >> >>> > >> <[hidden email] < > >> http://user/SendEmail.jtp?type=node&node=5730109&i=1 > >> >>> >> > >> >>> > > >> >>> > >> wrote: > >> >>> > >> > >> >>> > >>> > >> >>> > >>> I have activemmq Project in that i have following > requirement > >> >>> > >>> > >> >>> > >>> 1.Move message from Inbound queue to type based inbound > queue. > >> >>> > >>> 2.Move message from Message type inbound queue to outbound > queue > >> >>> > >>> > >> >>> > >>> I have created two bean for to achieve this. > >> >>> > >>> > >> >>> > >>> 1.one for move from inbound to message type inbound queue > >> >>> > >>> 2.one for move from inbound to outbound queue. > >> >>> > >>> > >> >>> > >>> I have following entry in camel.xml > >> >>> > >>> > >> >>> > >>> <camelContext id="camel" xmlns=" > >> >>> > http://camel.apache.org/schema/spring"> > >> >>> > >> > >> >>> > >>> > >> >>> > >>> <routeBuilder ref="routeBuilder" /> > >> >>> > >>> <routeBuilder ref="routeBuilder1" /> > >> >>> > >>> > >> >>> > >>> </camelContext> > >> >>> > >>> > >> >>> > >>> <bean id="routeBuilder" > >> >>> > >>> class="com.camel.routes.SinglecastRouteBuilder"/> > >> >>> > >>> <bean id="recipientsGenerator" > >> >>> > >>> class="com.camel.routes.TypeSpecificListBean"/> > >> >>> > >>> <bean id="routeBuilder1" > >> >>> > >>> class="com.camel.routes.MulticastRouteBuilder"/> > >> >>> > >>> <bean id="recipientsGenerator1" > >> >>> > >>> class="com.camel.routes.RecipientListBean"/> > >> >>> > >>> > >> >>> > >>> When i run application i am getting following error. > >> >>> > >>> > >> >>> > >>> * java.lang.Exception: > org.apache.camel.RuntimeCamelException: > >> >>> > >>> org.apache.camel.Fa > >> >>> > >>> iledToCreateRouteException: Failed to create route route2: > >> >>> > >>> Route[[From[Inbound.G > >> >>> > >>> MD.TestEvent]] -> [Multicast[[Bean[ref:... because of No > endpoint > >> >>> > could > >> >>> > >> be > >> >>> > >>> found > >> >>> > >>> for: Inbound.SSS.TestEvent, please check your classpath > contains > >> the > >> >>> > >> needed > >> >>> > >>> Cam > >> >>> > >>> el component jar.* > >> >>> > >>> > >> >>> > >>> I am not sure i am missing any configuration,Please kindly > help > >> me > >> >>> > >>> > >> >>> > >>> > >> >>> > >>> > >> >>> > >>> > >> >>> > >>> -- > >> >>> > >>> View this message in context: > >> >>> > >> > >> http://camel.465427.n5.nabble.com/Camel-routing-issue-tp5730094.html > >> >>> > >>> Sent from the Camel - Users mailing list archive at > Nabble.com. > >> >>> > >> > >> >>> > >> > >> >>> > >> > >> >>> > >> -- > >> >>> > >> Claus Ibsen > >> >>> > >> ----------------- > >> >>> > >> Red Hat, Inc. > >> >>> > >> FuseSource is now part of Red Hat > >> >>> > >> Email: [hidden email]< > >> >>> > http://user/SendEmail.jtp?type=node&node=5730109&i=2> > >> >>> > >> Web: http://fusesource.com > >> >>> > >> Twitter: davsclaus > >> >>> > >> Blog: http://davsclaus.com > >> >>> > >> Author of Camel in Action: http://www.manning.com/ibsen > >> >>> > >> > >> >>> > >> > >> >>> > >> ------------------------------ > >> >>> > >> If you reply to this email, your message will be added to the > >> >>> > discussion > >> >>> > >> below: > >> >>> > >> > >> >>> > >> > >> >>> > > >> >>> > >> . > >> >>> > >> 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 > >> >>> > > >> >>> > > >> >>> > >> > >> >>> > > > >> >>> > > > >> >>> > > > >> >>> > > -- > >> >>> > > Thanks & Regards > >> >>> > > Prabu.N > >> >>> > > > >> >>> > > > >> >>> > > > >> >>> > > > >> >>> > > -- > >> >>> > > View this message in context: > >> >>> > > >> >>> > >> > http://camel.465427.n5.nabble.com/Camel-routing-issue-tp5730094p5730115.html > >> >>> > > >> >>> > > Sent from the Camel - Users mailing list archive at Nabble.com. > >> >>> > > >> >>> > > >> >>> > > >> >>> > ------------------------------ > >> >>> > If you reply to this email, your message will be added to the > >> discussion > >> >>> > below: > >> >>> > > >> >>> > > >> >>> > >> > http://camel.465427.n5.nabble.com/Camel-routing-issue-tp5730094p5730116.html > >> >>> > To unsubscribe from Camel routing issue, click here< > >> >>> > >> >>> > > >> >>> > . > >> >>> > 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 > >> >>> > > >> >>> > > >> >>> > >> >>> > >> >>> > >> >>> -- > >> >>> Thanks & Regards > >> >>> Prabu.N > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> -- > >> >>> View this message in context: > >> >>> > >> > http://camel.465427.n5.nabble.com/Camel-routing-issue-tp5730094p5730118.html > >> >>> Sent from the Camel - Users mailing list archive at Nabble.com. > >> >>> > >> >> > >> >> > >> >> > >> >> -- > >> >> Claus Ibsen > >> >> ----------------- > >> >> Red Hat, Inc. > >> >> FuseSource is now part of Red Hat > >> >> Email: [hidden > >> >> email]<http://user/SendEmail.jtp?type=node&node=5730166&i=7> > >> >> Web: http://fusesource.com > >> >> Twitter: davsclaus > >> >> Blog: http://davsclaus.com > >> >> Author of Camel in Action: http://www.manning.com/ibsen > >> > > > > > > > > -- > > Claus Ibsen > > ----------------- > > Red Hat, Inc. > > FuseSource is now part of Red Hat > > Email: [hidden email]<http://user/SendEmail.jtp?type=node&node=5730166&i=8> > > Web: http://fusesource.com > > Twitter: davsclaus > > Blog: http://davsclaus.com > > Author of Camel in Action: http://www.manning.com/ibsen > > > ------------------------------ > If you reply to this email, your message will be added to the discussion > below: > > http://camel.465427.n5.nabble.com/Camel-routing-issue-tp5730094p5730166.html > To unsubscribe from Camel routing issue, click > here<http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5730094&code=cHJhYnVtY2EwNkBnbWFpbC5jb218NTczMDA5NHw4OTY0MTU3ODg=> > . > 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> > -- Thanks & Regards Prabu.N -- View this message in context: http://camel.465427.n5.nabble.com/Camel-routing-issue-tp5730094p5730168.html Sent from the Camel - Users mailing list archive at Nabble.com.