org.apache.camel.spi
Interface ShutdownStrategy

All Superinterfaces:
Service
All Known Implementing Classes:
DefaultShutdownStrategy

public interface ShutdownStrategy
extends Service

Pluggable shutdown strategy executed during shutdown of routes.

Shutting down routes in a reliable and graceful manner is not a trivial task. Therefore Camel provides a pluggable strategy allowing 3rd party to use their own strategy if needed.

The key problem is to stop the input consumers for the routes such that no new messages is coming into Camel. But at the same time still keep the routes running so the existing in flight exchanges can still be run to completion. On top of that there are some in memory components (such as SEDA) which may have pending messages on its in memory queue which we want to run to completion as well, otherwise they will get lost.

Camel provides a default strategy which supports all that that can be used as inspiration for your own strategy.

Version:
$Revision: 17128 $
See Also:
ShutdownAware

Method Summary
 long getTimeout()
          Gets the timeout.
 TimeUnit getTimeUnit()
          Gets the time unit used
 boolean isShutdownNowOnTimeout()
          whether to force shutdown of all consumers when a timeout occurred.
 void setShutdownNowOnTimeout(boolean shutdownNowOnTimeout)
          Sets whether to force shutdown of all consumers when a timeout occurred and thus not all consumers was shutdown within that period.
 void setTimeout(long timeout)
          Set an timeout to wait for the shutdown to complete.
 void setTimeUnit(TimeUnit timeUnit)
          Set the time unit to use
 void shutdown(CamelContext context, List<RouteStartupOrder> routes)
          Shutdown the routes
 
Methods inherited from interface org.apache.camel.Service
start, stop
 

Method Detail

shutdown

void shutdown(CamelContext context,
              List<RouteStartupOrder> routes)
              throws Exception
Shutdown the routes

Parameters:
context - the camel context
routes - the routes, ordered by the order they was started
Throws:
Exception - is thrown if error shutting down the consumers, however its preferred to avoid this

setTimeout

void setTimeout(long timeout)
Set an timeout to wait for the shutdown to complete.

Setting a value of 0 or negative will disable timeout and wait until complete (potential blocking forever)

Parameters:
timeout - timeout in millis

getTimeout

long getTimeout()
Gets the timeout.

Use 0 or a negative value to disable timeout

Returns:
the timeout

setTimeUnit

void setTimeUnit(TimeUnit timeUnit)
Set the time unit to use

Parameters:
timeUnit - the unit to use

getTimeUnit

TimeUnit getTimeUnit()
Gets the time unit used

Returns:
the time unit

setShutdownNowOnTimeout

void setShutdownNowOnTimeout(boolean shutdownNowOnTimeout)
Sets whether to force shutdown of all consumers when a timeout occurred and thus not all consumers was shutdown within that period.

You should have good reasons to set this option to false as it means that the routes keep running and is halted abruptly when CamelContext has been shutdown.

Parameters:
shutdownNowOnTimeout - true to force shutdown, false to leave them running

isShutdownNowOnTimeout

boolean isShutdownNowOnTimeout()
whether to force shutdown of all consumers when a timeout occurred.

Returns:
force shutdown or not


Copyright © 2007-2010 IONA Open Source Community. All Rights Reserved.