You can use bean function in the simple language ${bean:xxx} to refer
to a bean by its id, then you can store your offset cache with some
bean id.

On Thu, Dec 12, 2019 at 7:08 AM Ron Cecchini <roncecch...@comcast.net> wrote:
>
> The use case is simply this: I need to poll and hit an HTTP endpoint with an 
> initial "offset" param of -1.  The response header contains a new offset 
> ("NEXT_OFFSET") to use the next time I hit the endpoint.
>
> Sounds simple enough... Until you start trying to do it... playing around 
> with properties and headers, on and off the exchange, system properties, 
> GlobalOptions, setting the initial value in a "calling" route instead of a 
> class variable, etc, etc, etc.
>
> Finally I found a post with someone else asking the exact same question and 
> there was a response from Claus that mentioned using inline processors and 
> lambdas, which finally pointed me in the direction toward a solution.  I 
> still needed to figure out a few more things to actually do it.
>
> So, this is what I eventually implemented, and it works fine.  But is it 
> *really* the only way to communicate a value between a route and its 
> RouteBuilder class?  And can my snippet be simplified even more?  In 
> particular, note that I seemed to be required to use an intermediate header 
> value ("offset") to store/retrieve the actual offset to the "offsetCache" 
> class variable.
>
> Thanks.
>
> In my RouteBuilder configure():
>
> AtomicReference<String> offsetCache = new AtomicReference<>("-1");
>
> from("timer:mytimer?period={{polling.interval}}")
>     .process(exchange -> exchange.getIn().setHeader("offset", 
> offsetCache.get()))
>     .toD("{{url.base}}/${header.offset}")
>     // process the response and get the new offset from the header into the 
> class variable
>     .setHeader("offset", simple("${in.header.NEXT_OFFSET}"))
>     .process(exchange -> 
> offsetCache.set(exchange.getIn().getHeader("offset").toString()))



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to