Class JmsProducerImpl
- java.lang.Object
-
- com.adaptris.core.AdaptrisMessageWorkerImp
-
- com.adaptris.core.AdaptrisMessageProducerImp
-
- com.adaptris.core.RequestReplyProducerBase
-
- com.adaptris.core.jms.JmsProducerImpl
-
- All Implemented Interfaces:
AdaptrisComponent
,AdaptrisMessageProducer
,AdaptrisMessageSender
,AdaptrisMessageWorker
,ComponentLifecycle
,ComponentLifecycleExtension
,JmsActorConfig
,MessageEventGenerator
- Direct Known Subclasses:
DefinedJmsProducer
,JmsProducer
public abstract class JmsProducerImpl extends RequestReplyProducerBase implements JmsActorConfig
-
-
Field Summary
-
Fields inherited from class com.adaptris.core.AdaptrisMessageWorkerImp
log
-
-
Constructor Summary
Constructors Constructor Description JmsProducerImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
acknowledge(javax.jms.Message msg)
protected int
calculateDeliveryMode(AdaptrisMessage msg, java.lang.String defaultDeliveryMode)
protected int
calculatePriority(AdaptrisMessage msg, java.lang.Integer defaultPriority)
protected long
calculateTimeToLive(AdaptrisMessage msg, java.lang.Long defaultTTL)
protected boolean
captureOutgoingMessageDetails()
protected void
captureOutgoingMessageDetails(javax.jms.Message jmsMsg, AdaptrisMessage msg)
void
close()
Closes the component.void
commit()
int
configuredAcknowledgeMode()
Return the current acknowledge mode.CorrelationIdSource
configuredCorrelationIdSource()
Return the current correlation id source.AdaptrisMessageListener
configuredMessageListener()
return the current configured MessageListener.MessageTypeTranslator
configuredMessageTranslator()
Return the currently configured messageTranslator.org.slf4j.Logger
currentLogger()
Return the configured logger.javax.jms.Session
currentSession()
Return the current jms session.protected long
defaultTimeout()
The default timeout for request messages when not supplied.java.lang.String
getAcknowledgeMode()
Returns the JMS acknowledge mode.java.lang.Boolean
getCaptureOutgoingMessageDetails()
CorrelationIdSource
getCorrelationIdSource()
Returns correlationIdSource.java.lang.String
getDeliveryMode()
Returns the JMS delivery mode.MessageTypeTranslator
getMessageTranslator()
Returns theMessageTypeTranslator
to use.java.lang.Boolean
getPerMessageProperties()
java.lang.Integer
getPriority()
Returns the JMS priority.ProducerSessionFactory
getSessionFactory()
java.lang.Long
getTtl()
Returns the time to live.void
init()
Initialises the component.boolean
isManagedTransaction()
protected void
logLinkedException(java.lang.String prefix, java.lang.Exception e)
int
messagePriority()
boolean
perMessageProperties()
void
prepare()
Prepare for initialisation.protected ProducerSession
producerSession()
AdaptrisMessage
request(AdaptrisMessage msg)
Produce theAdaptrisMessage
to the configured destination and blocks indefinitely for a reply.protected javax.jms.Destination
retrieveObjectDestination(java.lang.String endpoint, AdaptrisMessage msg)
void
rollback()
long
rollbackTimeout()
How long we should wait after a rollback before continuing on with processingvoid
setAcknowledgeMode(java.lang.String s)
Sets the JMS acknowledge mode.void
setCaptureOutgoingMessageDetails(java.lang.Boolean b)
Specify whether or not to capture the outgoing message details as object metadata.void
setCorrelationIdSource(CorrelationIdSource c)
Sets correlationIdSource.void
setDeliveryMode(java.lang.String i)
Sets the JMS delivery mode.void
setMessageTranslator(MessageTypeTranslator translator)
Sets theMessageTypeTranslator
to use.void
setPerMessageProperties(java.lang.Boolean b)
Specify message properties per message rather than per producer.void
setPriority(java.lang.Integer i)
Sets the JMS priority.void
setSessionFactory(ProducerSessionFactory s)
Set the behavioural characteristics of the session used by this producer.void
setTtl(java.lang.Long l)
Sets the time to live.protected ProducerSession
setupSession(AdaptrisMessage msg)
void
start()
Starts the component.void
stop()
Stop the componentlong
timeToLive()
boolean
transactedSession()
protected javax.jms.Message
translate(AdaptrisMessage msg, javax.jms.Destination replyTo)
-
Methods inherited from class com.adaptris.core.RequestReplyProducerBase
copyReplyContents, getIgnoreReplyMetadata, mergeReply, setIgnoreReplyMetadata
-
Methods inherited from class com.adaptris.core.AdaptrisMessageProducerImp
createName, endpoint
-
Methods inherited from class com.adaptris.core.AdaptrisMessageWorkerImp
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.AdaptrisMessageProducer
request
-
Methods inherited from interface com.adaptris.core.AdaptrisMessageSender
produce
-
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
createQualifier, isTrackingEndpoint
-
-
-
-
Method Detail
-
prepare
public void prepare() throws CoreException
Description copied from interface:ComponentLifecycleExtension
Prepare for initialisation.- Specified by:
prepare
in interfaceComponentLifecycleExtension
- Throws:
CoreException
-
init
public void init() throws CoreException
Description copied from interface:ComponentLifecycle
Initialises the component.Component initialisation includes config verification, creation of connections etc.
- Specified by:
init
in interfaceComponentLifecycle
- Throws:
CoreException
- wrapping any underlyingException
s
-
stop
public void stop()
Description copied from interface:ComponentLifecycle
Stop the componentA stopped component is not expected to be ready to process messages. In the case of
AdaptrisMessageConsumer
, calling stop will pause message delivery. Throwing aRuntimeException
may cause unintended consequences- Specified by:
stop
in interfaceComponentLifecycle
-
start
public void start() throws CoreException
Description copied from interface:ComponentLifecycle
Starts the component.Once a component is started it should be ready to process messages. In the case of
AdaptrisMessageConsumer
, calling start will begin message delivery.- Specified by:
start
in interfaceComponentLifecycle
- Throws:
CoreException
- wrapping any underlyingException
s
-
close
public void close()
Description copied from interface:ComponentLifecycle
Closes the component.A closed component should release any connections it uses, etc. and clean up completely. Throwing a
RuntimeException
may cause unintended consequences- Specified by:
close
in interfaceComponentLifecycle
-
defaultTimeout
protected long defaultTimeout()
Description copied from class:RequestReplyProducerBase
The default timeout for request messages when not supplied.- Specified by:
defaultTimeout
in classRequestReplyProducerBase
- Returns:
- the default timeout.
-
request
public AdaptrisMessage request(AdaptrisMessage msg) throws ProduceException
Description copied from interface:AdaptrisMessageProducer
Produce theAdaptrisMessage
to the configured destination and blocks indefinitely for a reply.- Specified by:
request
in interfaceAdaptrisMessageProducer
- Parameters:
msg
- theAdaptrisMessage
to produce- Returns:
- a reply
AdaptrisMessage
which is generally the same as supplied parameter - Throws:
ProduceException
- wrapping any underlying Exceptions
-
setupSession
protected ProducerSession setupSession(AdaptrisMessage msg) throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
logLinkedException
protected void logLinkedException(java.lang.String prefix, java.lang.Exception e)
-
retrieveObjectDestination
protected javax.jms.Destination retrieveObjectDestination(java.lang.String endpoint, AdaptrisMessage msg) throws CoreException
- Throws:
CoreException
-
calculateDeliveryMode
protected int calculateDeliveryMode(AdaptrisMessage msg, java.lang.String defaultDeliveryMode)
-
calculateTimeToLive
protected long calculateTimeToLive(AdaptrisMessage msg, java.lang.Long defaultTTL) throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
translate
protected javax.jms.Message translate(AdaptrisMessage msg, javax.jms.Destination replyTo) throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
calculatePriority
protected int calculatePriority(AdaptrisMessage msg, java.lang.Integer defaultPriority)
-
getDeliveryMode
public java.lang.String getDeliveryMode()
Returns the JMS delivery mode.
- Returns:
- the JMS delivery mode
-
setDeliveryMode
public void setDeliveryMode(java.lang.String i)
Sets the JMS delivery mode.
The value may be either "PERSISENT", "NON_PERSISTENT", or the int corresponding to the javax.jms.DeliveryMode constant.
- Parameters:
i
- the JMS delivery mode
-
getPriority
public java.lang.Integer getPriority()
Returns the JMS priority.
- Returns:
- the JMS priority
-
setPriority
public void setPriority(java.lang.Integer i)
Sets the JMS priority. Valid values are 0 to 9.
- Parameters:
i
- the JMS priority
-
messagePriority
public int messagePriority()
-
getTtl
public java.lang.Long getTtl()
Returns the time to live. 0 means live forever.
- Returns:
- the time to live
-
timeToLive
public long timeToLive()
-
setTtl
public void setTtl(java.lang.Long l)
Sets the time to live.
- Parameters:
l
- the time to live
-
setMessageTranslator
public void setMessageTranslator(MessageTypeTranslator translator)
Sets the
MessageTypeTranslator
to use.- Parameters:
translator
- theMessageTypeTranslator
to use
-
getMessageTranslator
public MessageTypeTranslator getMessageTranslator()
Returns the
MessageTypeTranslator
to use.- Returns:
- the
MessageTypeTranslator
to use
-
setAcknowledgeMode
public void setAcknowledgeMode(java.lang.String s)
Sets the JMS acknowledge mode.
The value may be AUTO_KNOWLEDGE, CLIENT_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE or the int values corresponding to the JMS Session Constant
-
getAcknowledgeMode
public java.lang.String getAcknowledgeMode()
Returns the JMS acknowledge mode.
- Returns:
- the JMS acknowledge mode
-
getCorrelationIdSource
public CorrelationIdSource getCorrelationIdSource()
Returns correlationIdSource.
- Returns:
- correlationIdSource
-
setCorrelationIdSource
public void setCorrelationIdSource(CorrelationIdSource c)
Sets correlationIdSource.
- Parameters:
c
- the correlationIdSource to set
-
getPerMessageProperties
public java.lang.Boolean getPerMessageProperties()
- Returns:
- the perMessageProperties
-
setPerMessageProperties
public void setPerMessageProperties(java.lang.Boolean b)
Specify message properties per message rather than per producer.If set to true, then each message that is produced can have its own individual time-to-live, priority and delivery mode. These properties are taken from the producer's configuration but can be overriden via metadata.
- Parameters:
b
- the perMessageProperties to set- See Also:
JmsConstants.JMS_PRIORITY
,JmsConstants.JMS_DELIVERY_MODE
,JmsConstants.JMS_EXPIRATION
-
perMessageProperties
public boolean perMessageProperties()
-
commit
public void commit() throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
rollback
public void rollback()
-
producerSession
protected ProducerSession producerSession()
-
acknowledge
protected void acknowledge(javax.jms.Message msg) throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
configuredCorrelationIdSource
public CorrelationIdSource configuredCorrelationIdSource()
Description copied from interface:JmsActorConfig
Return the current correlation id source.- Specified by:
configuredCorrelationIdSource
in interfaceJmsActorConfig
- Returns:
- the correlation id source
-
configuredMessageTranslator
public MessageTypeTranslator configuredMessageTranslator()
Description copied from interface:JmsActorConfig
Return the currently configured messageTranslator.- Specified by:
configuredMessageTranslator
in interfaceJmsActorConfig
- Returns:
- the MessageTypeTranslator instance.
-
configuredAcknowledgeMode
public int configuredAcknowledgeMode()
Description copied from interface:JmsActorConfig
Return the current acknowledge mode.- Specified by:
configuredAcknowledgeMode
in interfaceJmsActorConfig
- Returns:
- the session acknowledge mode.
-
configuredMessageListener
public AdaptrisMessageListener configuredMessageListener()
Description copied from interface:JmsActorConfig
return the current configured MessageListener.- Specified by:
configuredMessageListener
in interfaceJmsActorConfig
- Returns:
- the adaptris message listener instance.
-
currentSession
public javax.jms.Session currentSession()
Description copied from interface:JmsActorConfig
Return the current jms session.- Specified by:
currentSession
in interfaceJmsActorConfig
- Returns:
- the current javax.jms.Session
-
currentLogger
public org.slf4j.Logger currentLogger()
Description copied from interface:JmsActorConfig
Return the configured logger.- Specified by:
currentLogger
in interfaceJmsActorConfig
- Returns:
- the logger.
-
transactedSession
public boolean transactedSession()
-
rollbackTimeout
public long rollbackTimeout()
Description copied from interface:JmsActorConfig
How long we should wait after a rollback before continuing on with processing- Specified by:
rollbackTimeout
in interfaceJmsActorConfig
- Returns:
- the timeout in ms.
-
isManagedTransaction
public boolean isManagedTransaction()
- Specified by:
isManagedTransaction
in interfaceJmsActorConfig
- Returns:
- whether we are in a managed (XA) transaction
-
captureOutgoingMessageDetails
protected boolean captureOutgoingMessageDetails()
-
getCaptureOutgoingMessageDetails
public java.lang.Boolean getCaptureOutgoingMessageDetails()
-
setCaptureOutgoingMessageDetails
public void setCaptureOutgoingMessageDetails(java.lang.Boolean b)
Specify whether or not to capture the outgoing message details as object metadata.Some JMS providers may not make information such as
Message.getJMSMessageID()
available until the message is accepted for delivery by the provider. Set this to be true, if you need to make use of that information later on in the workflow. All information captured is stored against the object metadata key "javax.jms.Message.{propertyName}" e.g. "javax.jms.Message.JMSMessageID" where JMSMessageID is derived from the associatedJmsConstants
constant.- Parameters:
b
- true to capture standard JMS Headers as object metadata post produce. If unspecified, defaults to false.
-
captureOutgoingMessageDetails
protected void captureOutgoingMessageDetails(javax.jms.Message jmsMsg, AdaptrisMessage msg)
-
getSessionFactory
public ProducerSessionFactory getSessionFactory()
-
setSessionFactory
public void setSessionFactory(ProducerSessionFactory s)
Set the behavioural characteristics of the session used by this producer.- Parameters:
s
- theProducerSessionFactory
instance, default isDefaultProducerSessionFactory
-
-