org.apache.camel.processor
Class DelayProcessorSupport
java.lang.Object
org.apache.camel.support.ServiceSupport
org.apache.camel.processor.DelegateAsyncProcessor
org.apache.camel.processor.DelayProcessorSupport
- All Implemented Interfaces:
- AsyncProcessor, DelegateProcessor, Navigate<Processor>, Processor, Service, ShutdownableService, StatefulService, SuspendableService
- Direct Known Subclasses:
- Delayer, DelayInterceptor, Throttler
public abstract class DelayProcessorSupport
- extends DelegateAsyncProcessor
A useful base class for any processor which provides some kind of throttling
or delayed processing.
This implementation will block while waiting.
- Version:
Field Summary |
protected org.slf4j.Logger |
log
|
Methods inherited from class org.apache.camel.support.ServiceSupport |
doResume, doSuspend, getStatus, getVersion, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isSuspended, isSuspending, resume, shutdown, start, stop, suspend |
log
protected final transient org.slf4j.Logger log
DelayProcessorSupport
public DelayProcessorSupport(CamelContext camelContext,
Processor processor)
DelayProcessorSupport
public DelayProcessorSupport(CamelContext camelContext,
Processor processor,
ScheduledExecutorService executorService,
boolean shutdownExecutorService)
process
public boolean process(Exchange exchange,
AsyncCallback callback)
- Description copied from interface:
AsyncProcessor
- Processes the message exchange.
Similar to
Processor.process(org.apache.camel.Exchange)
, but the caller supports having the exchange asynchronously processed.
If there was a failure processing then the caused Exception
would be set on the Exchange
.
- Specified by:
process
in interface AsyncProcessor
- Overrides:
process
in class DelegateAsyncProcessor
- Parameters:
exchange
- the message exchangecallback
- the AsyncCallback
will be invoked when the processing of the exchange is completed.
If the exchange is completed synchronously, then the callback is also invoked synchronously.
The callback should therefore be careful of starting recursive loop.
- Returns:
- (doneSync) true to continue execute synchronously, false to continue being executed asynchronously
- See Also:
AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback)
isAsyncDelayed
public boolean isAsyncDelayed()
setAsyncDelayed
public void setAsyncDelayed(boolean asyncDelayed)
isCallerRunsWhenRejected
public boolean isCallerRunsWhenRejected()
setCallerRunsWhenRejected
public void setCallerRunsWhenRejected(boolean callerRunsWhenRejected)
calculateDelay
protected abstract long calculateDelay(Exchange exchange)
delay
protected void delay(long delay,
Exchange exchange)
throws InterruptedException
- Delays the given time before continuing.
This implementation will block while waiting
- Parameters:
delay
- the delay time in millisexchange
- the exchange being processed
- Throws:
InterruptedException
handleSleepInterruptedException
protected void handleSleepInterruptedException(InterruptedException e,
Exchange exchange)
throws InterruptedException
- Called when a sleep is interrupted; allows derived classes to handle this case differently
- Throws:
InterruptedException
currentSystemTime
protected long currentSystemTime()
doStart
protected void doStart()
throws Exception
- Description copied from class:
ServiceSupport
- Implementations override this method to support customized start/stop.
Important: See
ServiceSupport.doStop()
for more details.
- Overrides:
doStart
in class DelegateAsyncProcessor
- Throws:
Exception
- See Also:
ServiceSupport.doStop()
doShutdown
protected void doShutdown()
throws Exception
- Description copied from class:
ServiceSupport
- Implementations override this method to perform customized shutdown.
- Overrides:
doShutdown
in class ServiceSupport
- Throws:
Exception
Apache CAMEL