|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.camel.support.ServiceSupport
org.apache.camel.impl.DefaultShutdownStrategy
public class DefaultShutdownStrategy
Default ShutdownStrategy which uses graceful shutdown.
setTimeout(long) and
setShutdownNowOnTimeout(boolean) methods.
Routes will by default be shutdown in the reverse order of which they where started.
You can customize this using the setShutdownRoutesInReverseOrder(boolean) method.
After route consumers have been shutdown, then any ShutdownPrepared services on the routes
is being prepared for shutdown, by invoking ShutdownPrepared.prepareShutdown(boolean) which
force=false.
Then if a timeout occurred and the strategy has been configured with shutdown-now on timeout, then
the strategy performs a more aggressive forced shutdown, by forcing all consumers to shutdown
and then invokes ShutdownPrepared.prepareShutdown(boolean) with force=true
on the services. This allows the services to know they should force shutdown now.
When timeout occurred and a forced shutdown is happening, then there may be threads/tasks which are
still inflight which may be rejected continued being routed. By default this can cause WARN and ERRORs
to be logged. The option setSuppressLoggingOnTimeout(boolean) can be used to suppress these
logs, so they are logged at TRACE level instead.
| Field Summary |
|---|
| Fields inherited from class org.apache.camel.support.ServiceSupport |
|---|
shutdown, shuttingdown, started, starting, stopped, stopping, suspended, suspending |
| Constructor Summary | |
|---|---|
DefaultShutdownStrategy()
|
|
DefaultShutdownStrategy(CamelContext camelContext)
|
|
| Method Summary | |
|---|---|
protected void |
doShutdown()
Implementations override this method to perform customized shutdown. |
protected boolean |
doShutdown(CamelContext context,
List<RouteStartupOrder> routes,
long timeout,
TimeUnit timeUnit,
boolean suspendOnly,
boolean abortAfterTimeout,
boolean forceShutdown)
|
protected void |
doStart()
Implementations override this method to support customized start/stop. |
protected void |
doStop()
Implementations override this method to support customized start/stop. |
boolean |
forceShutdown(Service service)
Whether a service is forced to shutdown. |
CamelContext |
getCamelContext()
Get the CamelContext |
Future<?> |
getCurrentShutdownTaskFuture()
|
long |
getTimeout()
Gets the timeout. |
TimeUnit |
getTimeUnit()
Gets the time unit used |
boolean |
hasTimeoutOccurred()
Whether a timeout has occurred during a shutdown. |
boolean |
isShutdownNowOnTimeout()
Whether to force shutdown of all consumers when a timeout occurred. |
boolean |
isShutdownRoutesInReverseOrder()
Whether to shutdown routes in reverse order than they where started. |
boolean |
isSuppressLoggingOnTimeout()
Whether Camel should try to suppress logging during shutdown and timeout was triggered, meaning forced shutdown is happening. |
void |
setCamelContext(CamelContext camelContext)
Injects the CamelContext |
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 |
setShutdownRoutesInReverseOrder(boolean shutdownRoutesInReverseOrder)
Sets whether routes should be shutdown in reverse or the same order as they where started. |
void |
setSuppressLoggingOnTimeout(boolean suppressLoggingOnTimeout)
Whether Camel should try to suppress logging during shutdown and timeout was triggered, meaning forced shutdown is happening. |
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 |
void |
shutdown(CamelContext context,
List<RouteStartupOrder> routes,
long timeout,
TimeUnit timeUnit)
Shutdown the routes using a specified timeout instead of the default timeout values |
boolean |
shutdown(CamelContext context,
RouteStartupOrder route,
long timeout,
TimeUnit timeUnit,
boolean abortAfterTimeout)
Shutdown the route using a specified timeout instead of the default timeout values and supports abortAfterTimeout mode |
void |
shutdownForced(CamelContext context,
List<RouteStartupOrder> routes)
Shutdown the routes, forcing shutdown being more aggressive, if timeout occurred. |
protected static void |
shutdownNow(Consumer consumer)
Shutdown the consumer immediately. |
protected void |
shutdownNow(List<Consumer> consumers)
Shutdown all the consumers immediately. |
protected void |
shutdownRoutesNow(List<RouteStartupOrder> routes)
Shutdown all the consumers immediately. |
void |
suspend(CamelContext context,
List<RouteStartupOrder> routes)
Suspends the routes |
void |
suspend(CamelContext context,
List<RouteStartupOrder> routes,
long timeout,
TimeUnit timeUnit)
Suspends the routes using a specified timeout instead of the default timeout values |
protected static void |
suspendNow(Consumer consumer)
Suspends/stops the consumer immediately. |
| Methods inherited from class org.apache.camel.support.ServiceSupport |
|---|
doResume, doSuspend, getStatus, getVersion, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, resume, shutdown, start, stop, suspend |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface org.apache.camel.Service |
|---|
start, stop |
| Constructor Detail |
|---|
public DefaultShutdownStrategy()
public DefaultShutdownStrategy(CamelContext camelContext)
| Method Detail |
|---|
public void shutdown(CamelContext context,
List<RouteStartupOrder> routes)
throws Exception
ShutdownStrategy
shutdown in interface ShutdownStrategycontext - the camel contextroutes - the routes, ordered by the order they was started
Exception - is thrown if error shutting down the consumers, however its preferred to avoid this
public void shutdownForced(CamelContext context,
List<RouteStartupOrder> routes)
throws Exception
ShutdownStrategyCamelContext is shutting down, to ensure Camel will shutdown
if messages seems to be stuck.
shutdownForced in interface ShutdownStrategycontext - the camel contextroutes - the routes, ordered by the order they was started
Exception - is thrown if error shutting down the consumers, however its preferred to avoid this
public void suspend(CamelContext context,
List<RouteStartupOrder> routes)
throws Exception
ShutdownStrategy
suspend in interface ShutdownStrategycontext - the camel contextroutes - the routes, ordered by the order they was started
Exception - is thrown if error suspending the consumers, however its preferred to avoid this
public void shutdown(CamelContext context,
List<RouteStartupOrder> routes,
long timeout,
TimeUnit timeUnit)
throws Exception
ShutdownStrategy
shutdown in interface ShutdownStrategycontext - the camel contextroutes - the routes, ordered by the order they was startedtimeout - timeouttimeUnit - the unit to use
Exception - is thrown if error shutting down the consumers, however its preferred to avoid this
public boolean shutdown(CamelContext context,
RouteStartupOrder route,
long timeout,
TimeUnit timeUnit,
boolean abortAfterTimeout)
throws Exception
ShutdownStrategy
shutdown in interface ShutdownStrategycontext - the camel contextroute - the routetimeout - timeouttimeUnit - the unit to useabortAfterTimeout - should abort shutdown after timeout
Exception - is thrown if error shutting down the consumer, however its preferred to avoid this
public void suspend(CamelContext context,
List<RouteStartupOrder> routes,
long timeout,
TimeUnit timeUnit)
throws Exception
ShutdownStrategy
suspend in interface ShutdownStrategycontext - the camel contextroutes - the routes, ordered by the order they was startedtimeout - timeouttimeUnit - the unit to use
Exception - is thrown if error suspending the consumers, however its preferred to avoid this
protected boolean doShutdown(CamelContext context,
List<RouteStartupOrder> routes,
long timeout,
TimeUnit timeUnit,
boolean suspendOnly,
boolean abortAfterTimeout,
boolean forceShutdown)
throws Exception
Exceptionpublic boolean forceShutdown(Service service)
ShutdownStrategyRedeliveryErrorHandler uses this information
to know if a forced shutdown is in progress, and then break out of redelivery attempts.
forceShutdown in interface ShutdownStrategyservice - the service
public boolean hasTimeoutOccurred()
ShutdownStrategy
hasTimeoutOccurred in interface ShutdownStrategypublic void setTimeout(long timeout)
ShutdownStrategyLong.MAX_VALUE
The default timeout unit is SECONDS
setTimeout in interface ShutdownStrategytimeout - timeoutpublic long getTimeout()
ShutdownStrategy
getTimeout in interface ShutdownStrategypublic void setTimeUnit(TimeUnit timeUnit)
ShutdownStrategy
setTimeUnit in interface ShutdownStrategytimeUnit - the unit to usepublic TimeUnit getTimeUnit()
ShutdownStrategy
getTimeUnit in interface ShutdownStrategypublic void setShutdownNowOnTimeout(boolean shutdownNowOnTimeout)
ShutdownStrategyCamelContext has been shutdown.
setShutdownNowOnTimeout in interface ShutdownStrategyshutdownNowOnTimeout - true to force shutdown, false to leave them runningpublic boolean isShutdownNowOnTimeout()
ShutdownStrategy
isShutdownNowOnTimeout in interface ShutdownStrategypublic boolean isShutdownRoutesInReverseOrder()
ShutdownStrategy
isShutdownRoutesInReverseOrder in interface ShutdownStrategypublic void setShutdownRoutesInReverseOrder(boolean shutdownRoutesInReverseOrder)
ShutdownStrategy
setShutdownRoutesInReverseOrder in interface ShutdownStrategyshutdownRoutesInReverseOrder - true to shutdown in reverse orderpublic boolean isSuppressLoggingOnTimeout()
ShutdownStrategy
isSuppressLoggingOnTimeout in interface ShutdownStrategypublic void setSuppressLoggingOnTimeout(boolean suppressLoggingOnTimeout)
ShutdownStrategy
setSuppressLoggingOnTimeout in interface ShutdownStrategysuppressLoggingOnTimeout - true to suppress logging, false to log as usual.public CamelContext getCamelContext()
CamelContextAwareCamelContext
getCamelContext in interface CamelContextAwarepublic void setCamelContext(CamelContext camelContext)
CamelContextAwareCamelContext
setCamelContext in interface CamelContextAwarecamelContext - the Camel contextpublic Future<?> getCurrentShutdownTaskFuture()
protected void shutdownRoutesNow(List<RouteStartupOrder> routes)
routes - the routes to shutdownprotected void shutdownNow(List<Consumer> consumers)
consumers - the consumers to shutdownprotected static void shutdownNow(Consumer consumer)
consumer - the consumer to shutdownprotected static void suspendNow(Consumer consumer)
consumer - the consumer to suspend
protected void doStart()
throws Exception
ServiceSupportServiceSupport.doStop() for more details.
doStart in class ServiceSupportExceptionServiceSupport.doStop()
protected void doStop()
throws Exception
ServiceSupportServiceSupport.doStop() method when
the service is being stopped. This method will also be invoked
if the service is still in uninitialized state (eg has not
been started). The method is always called to allow the service
to do custom logic when the service is being stopped, such as when
CamelContext is shutting down.
doStop in class ServiceSupportExceptionServiceSupport.doStart()
protected void doShutdown()
throws Exception
ServiceSupport
doShutdown in class ServiceSupportException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||