public class ThreadsProcessor extends ServiceSupport implements AsyncProcessor, IdAware
Exchange
s
using the asynchronous routing engine.
Notice: For transacted routes then this ThreadsProcessor
is not in use, as we want to
process messages using the same thread to support all work done in the same transaction. The reason
is that the transaction manager that orchestrate the transaction, requires all the work to be done
on the same thread.
Pay attention to how this processor handles rejected tasks.
RejectedExecutionException
exception,
and marked to stop continue routing.
The UnitOfWork
will be regarded as failed, due the exception.UnitOfWork
will be regarded as successful, due no exception being set.UnitOfWork
will be regarded as successful, due no exception being set.
And the current exchange will be added to the task queue.shuttingdown, started, starting, stopped, stopping, suspended, suspending
Constructor and Description |
---|
ThreadsProcessor(CamelContext camelContext,
ExecutorService executorService,
boolean shutdownExecutorService,
ThreadPoolRejectedPolicy rejectedPolicy) |
Modifier and Type | Method and Description |
---|---|
protected void |
doShutdown()
Implementations override this method to perform customized shutdown.
|
protected void |
doStart()
Implementations override this method to support customized start/stop.
|
protected void |
doStop()
Implementations override this method to support customized start/stop.
|
ExecutorService |
getExecutorService() |
String |
getId()
Returns the id
|
ThreadPoolRejectedPolicy |
getRejectedPolicy() |
void |
process(Exchange exchange)
Processes the message exchange
|
boolean |
process(Exchange exchange,
AsyncCallback callback)
Processes the message exchange.
|
void |
setId(String id)
Sets the id
|
String |
toString() |
doResume, doSuspend, getStatus, getVersion, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, shutdown, start, stop, suspend
public ThreadsProcessor(CamelContext camelContext, ExecutorService executorService, boolean shutdownExecutorService, ThreadPoolRejectedPolicy rejectedPolicy)
public void process(Exchange exchange) throws Exception
Processor
public boolean process(Exchange exchange, AsyncCallback callback)
AsyncProcessor
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
.process
in interface AsyncProcessor
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.public ExecutorService getExecutorService()
public ThreadPoolRejectedPolicy getRejectedPolicy()
protected void doStart() throws Exception
ServiceSupport
ServiceSupport.doStop()
for more details.doStart
in class ServiceSupport
Exception
ServiceSupport.doStop()
protected void doStop() throws Exception
ServiceSupport
ServiceSupport.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 ServiceSupport
Exception
ServiceSupport.doStart()
protected void doShutdown() throws Exception
ServiceSupport
doShutdown
in class ServiceSupport
Exception
Apache Camel