org.apache.camel.processor
Class DelayProcessorSupport
java.lang.Object
org.apache.camel.impl.ServiceSupport
org.apache.camel.processor.DelegateAsyncProcessor
org.apache.camel.processor.DelayProcessorSupport
- All Implemented Interfaces:
- AsyncProcessor, Navigate<Processor>, Processor, Service, ShutdownableService
- 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.impl.ServiceSupport |
addChildService, doResume, doShutdown, doSuspend, getStatus, getVersion, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isSuspended, isSuspending, removeChildService, resume, shutdown, start, start, stop, suspend |
log
protected final transient org.slf4j.Logger log
DelayProcessorSupport
public DelayProcessorSupport(Processor processor)
DelayProcessorSupport
public DelayProcessorSupport(Processor processor,
ScheduledExecutorService executorService)
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
- Overrides:
doStart
in class DelegateAsyncProcessor
- Throws:
Exception
Apache CAMEL