I have found solution in internet using Predicate we can achieve this, But,one doubt in the link http://camel.apache.org/predicate.html,Theymentioned that we can use AND and OR in Predicate
I have added below code in project,But i am getting compilation error.Please kindly help *Predicate god = and(admin, or(body().contains("Camel Rider"), header("type").isEqualTo("god")));* *Thanks* Prabu.N On Mon, Apr 1, 2013 at 9:05 PM, Prabu <prabumc...@gmail.com> wrote: > 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 > -- Thanks & Regards Prabu.N -- View this message in context: http://camel.465427.n5.nabble.com/Camel-routing-issue-tp5730094p5730194.html Sent from the Camel - Users mailing list archive at Nabble.com.