It looks like there is problem on that page, because instead of source
snippets I see this error message

"Error formatting macro: snippet: java.lang.IndexOutOfBoundsException:
Index: 20, Size: 20  "

No idea where it is coming from, because in edit/preview mode, the
page is rendered fine

Bilgin

On 6 February 2012 06:07, Claus Ibsen <claus.ib...@gmail.com> wrote:
> Hi
>
> I have updated the FAQ with better examples how to stop a route (or
> Camel) from a route
> https://cwiki.apache.org/confluence/display/CAMEL/How+can+I+stop+a+route+from+a+route
>
> The source code for the example will be committed, when ASF SVN again works.
>
> There was in fact more problems with the old FAQ to stop a route using
> the same thread.
> Not only the problem identified by Babak, but you also have problem,
> that when the route is stopped
> it may close resources and whatnot currently in-use, that the current
> message was needed to use
> when it is done. For example a JMS consumer with TX would need to ack
> the message etc.
> A mail message need to set a SEEN flag on the mail etc.
>
> So spinning off a new thread to stop a route is best practice, this is
> also how you would normally stop routes, or the application itself.
>
> On Sun, Feb 5, 2012 at 4:34 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:
>> Hi
>>
>> No we should not do that.
>>
>> People should really not stop a route using the same thread that is
>> process currently messages from a route. But instead let another
>> thread stop the route.
>>
>> There is no good solution for stopping a route with the same thread in
>> mid flight of processing messages on a route. Its like sawing off the
>> branch you are sitting on.
>>
>> I have added a note on the FAQ.
>>
>>
>>
>> On Sun, Feb 5, 2012 at 4:28 PM, Babak Vahdat
>> <babak.vah...@swissonline.ch> wrote:
>>> Hi Claus,
>>>
>>> with the usage of ScheduledBatchPollingConsumer and it's derivates inside
>>> routes there's an issue while doing context.stopRoute("myCoolRoute") as
>>> Camel tries to shutdown the route gracefully and as the mentioned class
>>> does:
>>>
>>>        if (answer == 0 && isPolling()) {
>>>            // force at least one pending exchange if we are polling as
>>> there is a little gap
>>>            // in the processBatch method and until an exchange gets
>>> enlisted as in-flight
>>>            // which happens later, so we need to signal back to the
>>> shutdown strategy that
>>>            // there is a pending exchange. When we are no longer polling,
>>> then we will return 0
>>>            LOG.trace("Currently polling so returning 1 as pending
>>> exchanges");
>>>            answer = 1;
>>>        }
>>>
>>> it waits and waits until the (30 seconds) timeout reaches although no *real*
>>> inflight exchanges are available at all! I realized this behavior as I was
>>> trying to provide a working example for the user (you see already by this
>>> thread).
>>>
>>> However doing main.stop() (as by the upper example) did *not* behave like
>>> this!
>>>
>>> A possible fix (may be dirty) would be to check that if we already returned
>>> X times a hard-coded value of 1 then we should better return 0 instead to
>>> signal there's no real inflight exchange available.
>>>
>>> Babak
>>>
>>>
>>> --
>>> View this message in context: 
>>> http://camel.465427.n5.nabble.com/File-consumer-waiting-for-it-to-start-tp5455062p5458048.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> FuseSource
>> Email: cib...@fusesource.com
>> Web: http://fusesource.com
>> Twitter: davsclaus, fusenews
>> Blog: http://davsclaus.blogspot.com/
>> Author of Camel in Action: http://www.manning.com/ibsen/
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: cib...@fusesource.com
> Web: http://fusesource.com
> Twitter: davsclaus, fusenews
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/

Reply via email to