Package com.adaptris.xa.jms
Class XAJmsConsumerImpl
- java.lang.Object
-
- com.adaptris.core.AdaptrisMessageWorkerImp
-
- com.adaptris.core.AdaptrisMessageConsumerImp
-
- com.adaptris.xa.jms.XAJmsConsumerImpl
-
- All Implemented Interfaces:
AdaptrisComponent,AdaptrisMessageConsumer,AdaptrisMessageWorker,ComponentLifecycle,ComponentLifecycleExtension,JmsActorConfig,LicensedComponent,MessageEventGenerator,StateManagedComponent
- Direct Known Subclasses:
XAJmsConsumer
public abstract class XAJmsConsumerImpl extends AdaptrisMessageConsumerImp implements JmsActorConfig, LicensedComponent
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.util.concurrent.locks.ReentrantLockconsumeLockprotected javax.jms.MessageConsumerconsumerprotected java.lang.StringcurrentTxIdprotected java.util.concurrent.ScheduledExecutorServiceexecutorprotected java.util.concurrent.ScheduledFuture<?>pollerTaskprotected javax.jms.XASessionsession-
Fields inherited from class com.adaptris.core.AdaptrisMessageWorkerImp
log
-
-
Constructor Summary
Constructors Constructor Description XAJmsConsumerImpl()Creates a new instance.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidbeginTransaction()voidclose()protected booleancommitTransaction()protected booleancommitTransaction(int messageNumber)intconfiguredAcknowledgeMode()CorrelationIdSourceconfiguredCorrelationIdSource()AdaptrisMessageListenerconfiguredMessageListener()MessageTypeTranslatorconfiguredMessageTranslator()java.lang.StringconsumeLocationKey()Provides the metadata key "JMSDestination" which will only be populated ifMessageTypeTranslatorImp.getMoveJmsHeaders()is true.protected abstract javax.jms.MessageConsumercreateConsumer()org.slf4j.LoggercurrentLogger()javax.jms.SessioncurrentSession()protected java.lang.Stringendpoint()javax.jms.MessageConsumergetConsumer()@NotNull CorrelationIdSourcegetCorrelationIdSource()java.lang.StringgetEndpoint()The RFC6167 format topic/queue.java.lang.BooleangetGlobalLock()@javax.validation.constraints.NotNull intgetMaxBatch()@NotNull TimeIntervalgetMaxTransactionTime()java.lang.StringgetMessageSelector()The message selector to use when matching messages to consumeintgetMessagesInCurrentTransaction()@NotNull @NonNull MessageTypeTranslatorgetMessageTranslator()protected XAOnMessageHandlergetOnMessageHandler()@NotNull TimeIntervalgetReceiveWait()java.lang.BooleangetRecreateConsumerOnError()TransactionManagergetTransactionManager()@NotNull com.adaptris.xa.jms.exception.XAExceptionHandlergetXaExceptionHandler()@NotNull @NonNull java.lang.StringgetXaResourceName()Name to enlist a resource to the transaction manager.protected booleanglobalLock()protected voidhandleException(java.lang.Exception ex)protected voidhandleXAException(java.lang.Exception exception)voidinit()booleanisEnabled(License license)booleanisManagedTransaction()protected java.lang.StringmessageSelector()protected java.lang.StringnewThreadName()voidprepare()protected voidprocessXAMessages()protected booleanrollbackIfRequired()If the current transaction has been marked rollback only, lets do that.longrollbackTimeout()protected voidrollbackTransaction(boolean expected)voidsetConsumer(javax.jms.MessageConsumer consumer)voidsetCorrelationIdSource(@NotNull CorrelationIdSource correlationIdSource)voidsetEndpoint(java.lang.String endpoint)The RFC6167 format topic/queue.voidsetGlobalLock(java.lang.Boolean globalLock)voidsetMaxBatch(@javax.validation.constraints.NotNull int maxBatch)voidsetMaxTransactionTime(@NotNull TimeInterval maxTransactionTime)voidsetMessageSelector(java.lang.String messageSelector)The message selector to use when matching messages to consumevoidsetMessagesInCurrentTransaction(int messagesInCurrentTransaction)voidsetMessageTranslator(@NotNull @NonNull MessageTypeTranslator messageTranslator)protected voidsetOnMessageHandler(XAOnMessageHandler onMessageHandler)voidsetReceiveWait(@NotNull TimeInterval receiveWait)voidsetRecreateConsumerOnError(java.lang.Boolean recreateConsumerOnError)voidsetTransactionManager(TransactionManager transactionManager)voidsetXaExceptionHandler(@NotNull com.adaptris.xa.jms.exception.XAExceptionHandler xaExceptionHandler)voidsetXaResourceName(@NotNull @NonNull java.lang.String xaResourceName)Name to enlist a resource to the transaction manager.voidstart()protected voidstartProcessing()voidstop()<T extends XAJmsConsumerImpl>
TwithEndpoint(java.lang.String s)-
Methods inherited from class com.adaptris.core.AdaptrisMessageConsumerImp
changeState, registerAdaptrisMessageListener, renameThread, requestClose, requestInit, requestStart, requestStop, retrieveAdaptrisMessageListener, retrieveComponentState
-
Methods inherited from class com.adaptris.core.AdaptrisMessageWorkerImp
createName, createQualifier, decode, encode, getEncoder, getIsTrackingEndpoint, getMessageFactory, getUniqueId, handleConnectionException, isTrackingEndpoint, registerConnection, registerEncoderMessageFactory, retrieveConnection, setEncoder, setIsTrackingEndpoint, setMessageFactory, setUniqueId, withMessageFactory, withUniqueID
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.adaptris.core.AdaptrisComponent
getUniqueId
-
Methods inherited from interface com.adaptris.core.AdaptrisMessageWorker
decode, encode, getEncoder, getMessageFactory, handleConnectionException, registerConnection, retrieveConnection, setEncoder, setMessageFactory
-
Methods inherited from interface com.adaptris.core.MessageEventGenerator
createName, createQualifier, isTrackingEndpoint
-
-
-
-
Field Detail
-
consumer
protected transient javax.jms.MessageConsumer consumer
-
session
protected transient javax.jms.XASession session
-
executor
protected transient java.util.concurrent.ScheduledExecutorService executor
-
pollerTask
protected transient java.util.concurrent.ScheduledFuture<?> pollerTask
-
currentTxId
protected transient java.lang.String currentTxId
-
consumeLock
protected static final java.util.concurrent.locks.ReentrantLock consumeLock
-
-
Method Detail
-
createConsumer
protected abstract javax.jms.MessageConsumer createConsumer() throws javax.jms.JMSException, CoreException- Throws:
javax.jms.JMSExceptionCoreException
-
startProcessing
protected void startProcessing()
-
processXAMessages
protected void processXAMessages()
-
handleXAException
protected void handleXAException(java.lang.Exception exception)
-
rollbackIfRequired
protected boolean rollbackIfRequired()
If the current transaction has been marked rollback only, lets do that.
-
handleException
protected void handleException(java.lang.Exception ex)
-
beginTransaction
protected void beginTransaction() throws java.lang.Exception- Throws:
java.lang.Exception
-
commitTransaction
protected boolean commitTransaction(int messageNumber) throws java.lang.Exception- Throws:
java.lang.Exception
-
commitTransaction
protected boolean commitTransaction() throws java.lang.Exception- Throws:
java.lang.Exception
-
rollbackTransaction
protected void rollbackTransaction(boolean expected)
-
close
public void close()
- Specified by:
closein interfaceComponentLifecycle
-
init
public void init() throws CoreException- Specified by:
initin interfaceComponentLifecycle- Throws:
CoreException
-
start
public void start() throws CoreException- Specified by:
startin interfaceComponentLifecycle- Throws:
CoreException
-
stop
public void stop()
- Specified by:
stopin interfaceComponentLifecycle
-
prepare
public void prepare() throws CoreException- Specified by:
preparein interfaceComponentLifecycleExtension- Throws:
CoreException
-
isEnabled
public boolean isEnabled(License license)
- Specified by:
isEnabledin interfaceLicensedComponent
-
configuredAcknowledgeMode
public int configuredAcknowledgeMode()
- Specified by:
configuredAcknowledgeModein interfaceJmsActorConfig
-
configuredCorrelationIdSource
public CorrelationIdSource configuredCorrelationIdSource()
- Specified by:
configuredCorrelationIdSourcein interfaceJmsActorConfig
-
configuredMessageListener
public AdaptrisMessageListener configuredMessageListener()
- Specified by:
configuredMessageListenerin interfaceJmsActorConfig
-
configuredMessageTranslator
public MessageTypeTranslator configuredMessageTranslator()
- Specified by:
configuredMessageTranslatorin interfaceJmsActorConfig
-
currentLogger
public org.slf4j.Logger currentLogger()
- Specified by:
currentLoggerin interfaceJmsActorConfig
-
currentSession
public javax.jms.Session currentSession()
- Specified by:
currentSessionin interfaceJmsActorConfig
-
isManagedTransaction
public boolean isManagedTransaction()
- Specified by:
isManagedTransactionin interfaceJmsActorConfig
-
rollbackTimeout
public long rollbackTimeout()
- Specified by:
rollbackTimeoutin interfaceJmsActorConfig
-
globalLock
protected boolean globalLock()
-
getMessagesInCurrentTransaction
public int getMessagesInCurrentTransaction()
-
setMessagesInCurrentTransaction
public void setMessagesInCurrentTransaction(int messagesInCurrentTransaction)
-
getOnMessageHandler
protected XAOnMessageHandler getOnMessageHandler()
-
setOnMessageHandler
protected void setOnMessageHandler(XAOnMessageHandler onMessageHandler)
-
getConsumer
public javax.jms.MessageConsumer getConsumer()
-
setConsumer
public void setConsumer(javax.jms.MessageConsumer consumer)
-
consumeLocationKey
public java.lang.String consumeLocationKey()
Provides the metadata key "JMSDestination" which will only be populated ifMessageTypeTranslatorImp.getMoveJmsHeaders()is true.- Specified by:
consumeLocationKeyin interfaceAdaptrisMessageConsumer- Since:
- 3.9.0
-
withEndpoint
public <T extends XAJmsConsumerImpl> T withEndpoint(java.lang.String s)
-
messageSelector
protected java.lang.String messageSelector()
-
endpoint
protected java.lang.String endpoint()
-
newThreadName
protected java.lang.String newThreadName()
- Overrides:
newThreadNamein classAdaptrisMessageConsumerImp
-
getMaxBatch
@NotNull public @javax.validation.constraints.NotNull int getMaxBatch()
-
setMaxBatch
public void setMaxBatch(@NotNull @javax.validation.constraints.NotNull int maxBatch)
-
getMessageTranslator
@NotNull @NonNull public @NotNull @NonNull MessageTypeTranslator getMessageTranslator()
-
setMessageTranslator
public void setMessageTranslator(@NotNull @NonNull @NotNull @NonNull MessageTypeTranslator messageTranslator)
-
getCorrelationIdSource
@NotNull public @NotNull CorrelationIdSource getCorrelationIdSource()
-
setCorrelationIdSource
public void setCorrelationIdSource(@NotNull @NotNull CorrelationIdSource correlationIdSource)
-
getReceiveWait
@NotNull public @NotNull TimeInterval getReceiveWait()
-
setReceiveWait
public void setReceiveWait(@NotNull @NotNull TimeInterval receiveWait)
-
getMaxTransactionTime
@NotNull public @NotNull TimeInterval getMaxTransactionTime()
-
setMaxTransactionTime
public void setMaxTransactionTime(@NotNull @NotNull TimeInterval maxTransactionTime)
-
getXaResourceName
@NotNull @NonNull public @NotNull @NonNull java.lang.String getXaResourceName()
Name to enlist a resource to the transaction manager. Must be globally unique. A UUID is used if left empty.
-
setXaResourceName
public void setXaResourceName(@NotNull @NonNull @NotNull @NonNull java.lang.String xaResourceName)Name to enlist a resource to the transaction manager. Must be globally unique. A UUID is used if left empty.
-
getTransactionManager
public TransactionManager getTransactionManager()
-
setTransactionManager
public void setTransactionManager(TransactionManager transactionManager)
-
getXaExceptionHandler
@NotNull public @NotNull com.adaptris.xa.jms.exception.XAExceptionHandler getXaExceptionHandler()
-
setXaExceptionHandler
public void setXaExceptionHandler(@NotNull @NotNull com.adaptris.xa.jms.exception.XAExceptionHandler xaExceptionHandler)
-
getRecreateConsumerOnError
public java.lang.Boolean getRecreateConsumerOnError()
-
setRecreateConsumerOnError
public void setRecreateConsumerOnError(java.lang.Boolean recreateConsumerOnError)
-
getGlobalLock
public java.lang.Boolean getGlobalLock()
-
setGlobalLock
public void setGlobalLock(java.lang.Boolean globalLock)
-
getEndpoint
public java.lang.String getEndpoint()
The RFC6167 format topic/queue.
-
setEndpoint
public void setEndpoint(java.lang.String endpoint)
The RFC6167 format topic/queue.
-
getMessageSelector
public java.lang.String getMessageSelector()
The message selector to use when matching messages to consume
-
setMessageSelector
public void setMessageSelector(java.lang.String messageSelector)
The message selector to use when matching messages to consume
-
-