@ComponentProfile(summary="Workflow that executes within the current thread context.", tag="workflow", since="3.12.0") public class ThreadContextWorkflow extends WorkflowWithObjectPool
This is different to StandardWorkflow
in the sense that it does not synchronize on the
onAdaptrisMessage()
method and processes the message in the same thread as the caller.
This is useful if you have a consumer that may be triggered by multiple threads (e.g. Jetty or
JMS) but you don't want to use PoolingWorkflow
. It is probably of little or no benefit
where the consumer is a polling implementation.
Since services cannot be guaranteed to be thread-safe; it maintains an internal object pool that is independently sizeable.
In the adapter configuration file this class is aliased as thread-context-workflow which is the preferred alternative to the fully qualified classname when building your configuration.
WorkflowWithObjectPool.Worker, WorkflowWithObjectPool.WorkerFactory
DEFAULT_MAX_IDLE, DEFAULT_MAX_POOLSIZE, DEFAULT_MIN_IDLE
eventHandler, log, startTime, stopTime
PREVIOUS_GUID_KEY, WORKFLOW_ID_KEY
Constructor and Description |
---|
ThreadContextWorkflow() |
Modifier and Type | Method and Description |
---|---|
protected void |
closeWorkflow()
Close the workflow.
|
java.lang.String |
friendlyName()
Get the friendly name for this component.
|
java.lang.Boolean |
getAddCurrentThreadName()
Append the current thread name to any generated friendly name.
|
java.lang.Boolean |
getAdditionalDebug()
Log the internal object pool state.
|
protected void |
initialiseWorkflow()
Initialise the workflow.
|
protected void |
onMessage(AdaptrisMessage msg) |
void |
setAddCurrentThreadName(java.lang.Boolean addCurrentThreadName)
Append the current thread name to any generated friendly name.
|
void |
setAdditionalDebug(java.lang.Boolean additionalDebug)
Log the internal object pool state.
|
protected void |
startWorkflow()
Start the workflow.
|
protected void |
stopWorkflow()
Stop the workflow.
|
checkPoolConfig, cloneServiceCollection, createObjectPool, getInitWaitTime, getMaxIdle, getMinIdle, getPoolSize, initWaitTimeMs, maxIdle, minIdle, onAdaptrisMessage, poolSize, populatePool, preFlightServiceCheck, prepareWorkflow, resubmitMessage, returnObject, setInitWaitTime, setMaxIdle, setMinIdle, setPoolSize
addConsumeLocation, addInterceptor, changeState, channelUnavailableWait, close, copyExceptionHeaders, disableMessageCount, doProduce, getChannelUnavailableWaitInterval, getComments, getConsumer, getDisableDefaultMessageCount, getInterceptors, getMessageErrorHandler, getMessageLogger, getProduceExceptionHandler, getProducer, getSendEvents, getServiceCollection, getUniqueId, handleBadMessage, handleBadMessage, handleChannelUnavailable, handleProduceException, init, lastStartTime, lastStopTime, logSuccess, messageLogger, obtainChannel, obtainWorkflowId, prepare, processingStart, registerActiveMsgErrorHandler, registerChannel, registerEventHandler, requestClose, requestInit, requestStart, requestStop, retrieveActiveMsgErrorHandler, retrieveComponentState, sendEvents, sendMessageLifecycleEvent, setChannelUnavailableWaitInterval, setComments, setConsumer, setDisableDefaultMessageCount, setInterceptors, setMessageErrorHandler, setMessageLogger, setProduceExceptionHandler, setProducer, setSendEvents, setServiceCollection, setUniqueId, start, stop, workflowEnd, workflowStart
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
onAdaptrisMessage, onAdaptrisMessage
protected void onMessage(AdaptrisMessage msg)
onMessage
in class WorkflowWithObjectPool
public java.lang.String friendlyName()
AdaptrisMessageListener
friendlyName
in interface AdaptrisMessageListener
friendlyName
in class WorkflowImp
protected void initialiseWorkflow() throws CoreException
WorkflowImp
initialiseWorkflow
in class WorkflowImp
CoreException
- encapsulating any underlying Exceptionprotected void startWorkflow() throws CoreException
WorkflowImp
startWorkflow
in class WorkflowImp
CoreException
- encapsulating any underlying ExceptionComponentLifecycle.start()
protected void stopWorkflow()
WorkflowImp
stopWorkflow
in class WorkflowImp
protected void closeWorkflow()
WorkflowImp
closeWorkflow
in class WorkflowImp
public java.lang.Boolean getAddCurrentThreadName()
If you are using this workflow, then there may be thread naming in play (by jetty or otherwise)
which you may wish to preserve. Setting this flag to true means that the current thread name
from Thread.currentThread().currentName()
is appended to any generated friendly name.
It defaults to true if not explicitly configured
public void setAddCurrentThreadName(java.lang.Boolean addCurrentThreadName)
If you are using this workflow, then there may be thread naming in play (by jetty or otherwise)
which you may wish to preserve. Setting this flag to true means that the current thread name
from Thread.currentThread().currentName()
is appended to any generated friendly name.
It defaults to true if not explicitly configured
public java.lang.Boolean getAdditionalDebug()
public void setAdditionalDebug(java.lang.Boolean additionalDebug)