Hello So I can either create a producer route with from("ftp://...").converBodyTo(...).to("direct:result") and use String s = camel.createConsumerTemplate().receiveBody("direct:result", String.class);
or I create a consumer route with from("direct:getFile").pollEnrich("ftp://...").convertBodyTo(...) and use String s = camel.createFluentProducerTemplate().to("direct:getFile").request(String.class); Is there any difference or preferred style? For some reasons, the first one takes 2s whereas the second one finishes in only 0.02s. The first also gives a warning, even if I explicitly call consumerTemplate.stop(), why? "Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 300 seconds. Inflights per route: [route1 = 1]" -christian- Am Wed, 8 Feb 2017 12:03:27 +0100 schrieb "Condello, Giovanni" <g.conde...@techgap.it>: > Hi, > There's no need for two routes, unless your use case is more complex > than the example you provided. > > You can just use something like this: > > context.start(); > > /* Now camel is ready */ > > ProducerTemplate template = context.createProducerTemplate(); > > String result = template.requestBody("direct:blah", null, > String.class); > > /* This will block until your route produces something */ > > > context.stop() > > > 2017-02-08 11:57 GMT+01:00 Christian Brunotte <c...@lathspell.de>: > > Hello Zoran > > > > So what you propose is (in pseudocode): > > > > RouteBuilder builder = new RouteBuilder() { > > from("direct:start") > > .enrich("file://src/main/resources/inputs/test.txt") > > ... > > .to("direct:result"); > > } > > > > CamelContext camel = new DefaultCamelContext(); > > camel.addRoutes(simpleRoute); > > camel.start(); > > camel.createProducer().send("direct:start"); > > String result = camel.createConsumer().receiveBody("direct:result", > > String.class); camel.stop(); > > > > That would start the Camel Engine but it would wait for a command > > ("direct:start") before it does anything and then would have to be > > manually be polled, correct? > > > > Best Regards, > > > > -christian- > > > > Am Wed, 8 Feb 2017 09:41:24 +0100 > > schrieb Zoran Regvart <zo...@regvart.com>: > > > >> Hi Christian, > >> bare in mind that you can have control if you use direct > >> component, so having Camel context/routes started, doesn't mean > >> that it needs to poll in the background, you can do that on demand, > >> > >> HTH, > >> > >> zoran > >> > >> On Tue, Feb 7, 2017 at 10:56 PM, Christian Brunotte > >> <c...@lathspell.de> wrote: > >> > Hello > >> > > >> > I'd like to integrate Apache Camel into an existing project and > >> > just use some of it's endpoint capabilities (ftp, file, sftp > >> > etc.) to fetch some files and maybe validate them a bit. > >> > > >> > I don't want Camel to act as the main controller that dispatches > >> > everything in the background. > >> > > >> > Is it possible to use Camel in a very simplistic and lean way > >> > like e.g.: > >> > > >> > RouteBuilder simpleRoute = new RouteBuilder() { > >> > @Override > >> > public void configure() { > >> > > >> > from("file://src/main/resources/inputs/?include=input.*\\.txt&noop=true") > >> > .convertBodyTo(String.class) > >> > .validate(body().regex("...")); > >> > } > >> > }; > >> > > >> > String result = > >> > CamelContext.createSimpleConsumerTemplate(simpleRoute).receiveBody(String.class); > >> > > >> > Currently it seems that I still have to add the route to the > >> > CamelContext, start it, then call my ConsumerTemplate and after > >> > that stop the context. > >> > > >> > Best Regards > >> > > >> > -christian- > >> > >> > >>