Re: Polling http endpoints

2016-03-06 Thread jelmer
It does not look like loop takes a predicate, it expects the expression to
be a number, which i think makes it unsuited for this sort of thing.

I would this expect this to be a fairly common case, i am surprised its
this difficult to figure out how to do this

On 4 March 2016 at 16:25, Quinn Stevenson 
wrote:

> The “direct:await-import-complete” calling itself makes me a little
> nervous - the call stack could get pretty deep if it has to wait very long.
>
> Could you use the loop DSL (http://camel.apache.org/loop.html <
> http://camel.apache.org/loop.html>)?
>
>
> > On Mar 3, 2016, at 11:44 AM, jelmer  wrote:
> >
> > Since no one answered I came up with this :
> >
> >from("file:/Users/jkuperus/foo")
> >  .process(ToMultiPartRequestProcessor)
> >  .setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.POST))
> >  .setHeader(Exchange.CONTENT_TYPE, constant("multipart/form-data"))
> >  .setHeader(Exchange.HTTP_PATH, constant("/api/tasks"))
> >  .to("http4://localhost:11380")
> >  .transform().header("Content-Location")
> >  .to("direct:await-import-complete")
> >
> >
> >from("direct:await-import-complete")
> >  .setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.GET))
> >  .setHeader(Exchange.HTTP_PATH, body().convertToString())
> >  .to("http4://localhost:11380")
> >  .transform(body().convertToString())
> >  .choice()
> >.when().jsonpath("[?(@.state == 'completed')]")
> >  .transform().jsonpath("@.campaignId")
> >  .to("direct:do-stuff")
> >    .otherwise()
> >  .log("Task was not yet completed retrying in 2 seconds")
> >  .delay(2000)
> >  .transform().header(Exchange.HTTP_PATH)
> >  .to("direct:await-import-complete")
> >
> >
> > Does this make any sense ?
> >
> > On 2 March 2016 at 21:27, jelmer  wrote:
> >
> >> Hi as part of a camel route i upload a file to a REST service, the
> service
> >> will return status 202 and a Content-Location header that points to a
> json
> >> resource with a status field
> >> i want to wait for the status of this resource to change to completed,
> and
> >> only then continue. so i need some sort of polling
> >> But i don't see an obvious way to do this in camel
> >> can anyone offer any suggestions?
> >>
>
>


Re: Polling http endpoints

2016-03-03 Thread jelmer
Since no one answered I came up with this :

from("file:/Users/jkuperus/foo")
  .process(ToMultiPartRequestProcessor)
  .setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.POST))
  .setHeader(Exchange.CONTENT_TYPE, constant("multipart/form-data"))
  .setHeader(Exchange.HTTP_PATH, constant("/api/tasks"))
  .to("http4://localhost:11380")
  .transform().header("Content-Location")
  .to("direct:await-import-complete")


from("direct:await-import-complete")
  .setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.GET))
  .setHeader(Exchange.HTTP_PATH, body().convertToString())
  .to("http4://localhost:11380")
  .transform(body().convertToString())
  .choice()
.when().jsonpath("[?(@.state == 'completed')]")
  .transform().jsonpath("@.campaignId")
  .to("direct:do-stuff")
.otherwise()
  .log("Task was not yet completed retrying in 2 seconds")
  .delay(2000)
  .transform().header(Exchange.HTTP_PATH)
  .to("direct:await-import-complete")


Does this make any sense ?

On 2 March 2016 at 21:27, jelmer  wrote:

> Hi as part of a camel route i upload a file to a REST service, the service
> will return status 202 and a Content-Location header that points to a json
> resource with a status field
> i want to wait for the status of this resource to change to completed, and
> only then continue. so i need some sort of polling
> But i don't see an obvious way to do this in camel
> can anyone offer any suggestions?
>


Polling http endpoints

2016-03-02 Thread jelmer
Hi as part of a camel route i upload a file to a REST service, the service
will return status 202 and a Content-Location header that points to a json
resource with a status field
i want to wait for the status of this resource to change to completed, and
only then continue. so i need some sort of polling
But i don't see an obvious way to do this in camel
can anyone offer any suggestions?