camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Route consuming the same file, does not start the second time that it is ran
Date Thu, 27 Sep 2012 08:29:54 GMT
On Thu, Sep 27, 2012 at 10:23 AM, ddelizia <danilo.delizia@unic.com> wrote:
> Hi all,
> I need to consume a file (always the same) when an http request is done.
> Basically what I have to do is when an http request is done on a given
> address then I have to consume a file on an ftp, and process it.
> So I created the route as follow:
>
> from(
> "jetty:http://0.0.0.0:" + jettyPort + "/"
> + jettyControllerPathFeed).process(new Processor() {
>
> @Override
> public void process(Exchange arg0) throws Exception {
> getContext().startRoute(AdobeS7DefaultRoute.ROUTE_INCREMENTAL);
> }
> });
>
> from(
> "file:/opt/servicemix/data/smx-data/outbox?fileName=test.jtl&noop=true&idempotent=false").noAutoStartup()
> .id(ROUTE_INCREMENTAL)
> .to("direct:" + ROUTE_INCREMENTAL)
> .process(new Processor() {
> @Override
> public void process(Exchange arg0) throws Exception {
> getContext().getShutdownStrategy().setTimeout(1);
> getContext().stopRoute(ROUTE_INCREMENTAL);
> }
> });
>
> from("direct:" + ROUTE_INCREMENTAL)
> .unmarshal(csv)
> .process(new Processor() {
>
> //do things
> })
> .split(xpath(splitXml))
> .to("jms:" + jmsincrementalQueue + "?jmsMessageType=Text");
>
> The problem I get running these routes on the esb is that the route
> ROUTE_INCREMENTAL run correctly just the first time when I do the request
> the second time the route with id ROUTE_INCREMENTAL is not started.
> Debugging the route the second time I do the http request, the line
> getContext().startRoute(AdobeS7DefaultRoute.ROUTE_INCREMENTAL);
>
> seems to not work.
>
> I also used
> noop=true&idempotent=false
>
> to deactivate the idempotentrepository.
>
> I also tried to use a filebased Idempotent adding to my route:
> .idempotentConsumer(simple("${date:now:yyMMddHHmmssZ}"),
> FileIdempotentRepository.fileIdempotentRepository(new
> File("/opt/file.txt")))
>
> in this case I use the date as id, so the second time I do the request the
> Id should be different from the firstone. But even in this case the route is
> not started from the processor of the first route during the second request.
>
> Any Idea what is going on? why the first time the routes work perfectly and
> the second time the route ROUTE_INCREMENTAL is not started?
> There is any better solution to do what I would like to do?
>
> Thanks in advance for your help
> Danilo
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Route-consuming-the-same-file-does-not-start-the-second-time-that-it-is-ran-tp5720095.html
> Sent from the Camel - Users mailing list archive at Nabble.com.

Whoa that was way overkill and complicated.

If you need to pickup a file then just either use the content enricher
EIP (in your case it would be pollEnrich)
http://camel.apache.org/content-enricher.html

But it could be as simple as a message translator eip
http://camel.apache.org/message-translator.html

eg to transform the message to a java.io.File with the file name.

from("jetty")
   .transform().simple("/opt/servicemix/data/smx-data/outbox/test.jtl",
File.class)


-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cibsen@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Mime
View raw message