Class JMSRouter
- java.lang.Object
-
- org.smooks.cartridges.routing.jms.JMSRouter
-
- All Implemented Interfaces:
org.smooks.api.delivery.ContentHandler,org.smooks.api.delivery.ordering.Consumer,org.smooks.api.resource.visitor.sax.ng.AfterVisitor,org.smooks.api.resource.visitor.sax.ng.BeforeVisitor,org.smooks.api.resource.visitor.sax.ng.SaxNgVisitor,org.smooks.api.resource.visitor.Visitor
@VisitBeforeIf(condition="executeBefore") @VisitAfterIf(condition="!executeBefore") public class JMSRouter extends Object implements org.smooks.api.resource.visitor.sax.ng.BeforeVisitor, org.smooks.api.resource.visitor.sax.ng.AfterVisitor, org.smooks.api.delivery.ordering.Consumer
Router is a Visitor for DOM or SAX elements. It sends the content as a JMS Message object to the configured destination. The type of the JMS Message is determined by the "messageType" config param. Example configuration:<resource-config selector="orderItems"> <resource>org.smooks.routing.jms.JMSRouter</resource> <param name="beanId">beanId</param> <param name="destinationName">/queue/smooksRouterQueue</param> </resource-config> .... Optional parameters: <param name="executeBefore">true</param> <param name="jndiContextFactory">ConnectionFactory</param> <param name="jndiProviderUrl">jnp://localhost:1099</param> <param name="jndiNamingFactory">org.jboss.naming:java.naming.factory.url.pkgs=org.jnp.interfaces</param> <param name="connectionFactory">ConnectionFactory</param> <param name="deliveryMode">persistent</param> <param name="priority">10</param> <param name="timeToLive">100000</param> <param name="securityPrincipal">username</param> <param name="securityCredential">password</param> <param name="acknowledgeMode">AUTO_ACKNOWLEDGE</param> <param name="transacted">false</param> <param name="correlationIdPattern">orderitem-${order.orderId}-${order.orderItem.itemId}</param> <param name="messageType">ObjectMessage</param> <param name="highWaterMark">50</param> <param name="highWaterMarkTimeout">5000</param> <param name="highWaterMarkPollFrequency">500</param>Description of configuration properties:- jndiContextFactory: the JNDI ContextFactory to use.
- jndiProviderUrl: the JNDI Provider URL to use.
- jndiNamingFactory: the JNDI NamingFactory to use.
- connectionFactory: the ConnectionFactory to look up.
- deliveryMode: the JMS DeliveryMode. 'persistent'(default) or 'non-persistent'.
- priority: the JMS Priority to be used.
- timeToLive: the JMS Time-To-Live to be used.
- securityPrincipal: security principal use when creating the JMS connection.
- securityCredential: the security credentials to use when creating the JMS connection.
- acknowledgeMode: the acknowledge mode to use. One of 'AUTO_ACKNOWLEDGE'(default), 'CLIENT_ACKNOWLEDGE', 'DUPS_OK_ACKNOWLEDGE'.
- transacted: determines if the session should be transacted. Defaults to 'false'.
- correlationIdPattern: JMS Correlation pattern that will be used for the outgoing message. Supports templating.
- messageType: type of JMS Message that should be sent. 'TextMessage'(default), 'ObjectMessage' or 'MapMessage'.
- highWaterMark: max number of messages that can be sitting in the JMS Destination at any any time. Default is 200.
- highWaterMarkTimeout: number of ms to wait for the system to process JMS Messages from the JMS destination so that the number of JMS Messages drops below the highWaterMark. Default is 60000 ms.
- highWaterMarkPollFrequency: number of ms to wait between checks on the High Water Mark, while waiting for it to drop. Default is 1000 ms.
- Since:
- 1.0
- Author:
- Daniel Bevenius
-
-
Constructor Summary
Constructors Constructor Description JMSRouter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidclose(javax.jms.Connection connection)protected voidclose(javax.jms.Session session)booleanconsumes(Object object)protected javax.jms.MessageProducercreateMessageProducer(javax.jms.Destination destination, Context context)StringgetAcknowledgeMode()StringgetConnectionFactoryName()StringgetDeliveryMode()javax.jms.DestinationgetDestination()StringgetDestinationName()BooleangetExecuteBefore()StringgetJndiContextFactory()StringgetJndiNamingFactoryUrl()StringgetJndiProviderUrl()intgetPriority()StringgetSecurityCredential()StringgetSecurityPrincipal()longgetTimeToLive()voidinitialize()booleanisTransacted()voidpreDestroy()protected voidsendMessage(javax.jms.Message message)voidsetAcknowledgeMode(Optional<AckMode> jmsAcknowledgeMode)voidsetBeanId(String beanId)voidsetConnectionFactoryName(Optional<String> connectionFactoryName)voidsetCorrelationIdPattern(String correlationIdPattern)voidsetDeliveryMode(Optional<DeliveryMode> deliveryMode)voidsetDestinationName(String destinationName)voidsetHighWaterMark(int highWaterMark)voidsetHighWaterMarkPollFrequency(long highWaterMarkPollFrequency)voidsetHighWaterMarkTimeout(long highWaterMarkTimeout)voidsetJndiContextFactory(Optional<String> contextFactory)voidsetJndiNamingFactoryUrl(Optional<String> pkgUrl)voidsetJndiProperties(Optional<String> propertiesFile)voidsetJndiProperties(Properties properties)voidsetJndiProviderUrl(Optional<String> providerUrl)protected voidsetMessageProducerProperties()Sets the following MessageProducer properties:TimeToLive Priority DeliveryMode voidsetMessageType(Optional<StrategyFactory.StrategyFactoryEnum> messageType)voidsetMsgCreationStrategy(MessageCreationStrategy msgCreationStrategy)voidsetPriority(Optional<Integer> priority)voidsetSecurityCredential(Optional<String> securityCredential)voidsetSecurityPrincipal(Optional<String> securityPrincipal)voidsetTimeToLive(Optional<Long> timeToLive)voidsetTransacted(Optional<Boolean> transacted)voidvisitAfter(Element element, org.smooks.api.ExecutionContext execContext)voidvisitBefore(Element element, org.smooks.api.ExecutionContext execContext)
-
-
-
Method Detail
-
initialize
@PostConstruct public void initialize() throws org.smooks.api.SmooksConfigException, javax.jms.JMSException- Throws:
org.smooks.api.SmooksConfigExceptionjavax.jms.JMSException
-
preDestroy
@PreDestroy public void preDestroy() throws javax.jms.JMSException- Throws:
javax.jms.JMSException
-
consumes
public boolean consumes(Object object)
- Specified by:
consumesin interfaceorg.smooks.api.delivery.ordering.Consumer
-
setBeanId
public void setBeanId(String beanId)
-
setCorrelationIdPattern
public void setCorrelationIdPattern(String correlationIdPattern)
-
setHighWaterMark
public void setHighWaterMark(int highWaterMark)
-
setHighWaterMarkTimeout
public void setHighWaterMarkTimeout(long highWaterMarkTimeout)
-
setHighWaterMarkPollFrequency
public void setHighWaterMarkPollFrequency(long highWaterMarkPollFrequency)
-
setJndiProperties
public void setJndiProperties(Properties properties)
-
setDestinationName
@Inject public void setDestinationName(String destinationName)
-
setDeliveryMode
@Inject public void setDeliveryMode(Optional<DeliveryMode> deliveryMode)
-
setSecurityCredential
@Inject public void setSecurityCredential(Optional<String> securityCredential)
-
setConnectionFactoryName
@Inject public void setConnectionFactoryName(Optional<String> connectionFactoryName)
-
setMessageType
@Inject public void setMessageType(Optional<StrategyFactory.StrategyFactoryEnum> messageType)
-
getExecuteBefore
public Boolean getExecuteBefore()
-
visitAfter
public void visitAfter(Element element, org.smooks.api.ExecutionContext execContext) throws org.smooks.api.SmooksException
- Specified by:
visitAfterin interfaceorg.smooks.api.resource.visitor.sax.ng.AfterVisitor- Throws:
org.smooks.api.SmooksException
-
visitBefore
public void visitBefore(Element element, org.smooks.api.ExecutionContext execContext) throws org.smooks.api.SmooksException
- Specified by:
visitBeforein interfaceorg.smooks.api.resource.visitor.sax.ng.BeforeVisitor- Throws:
org.smooks.api.SmooksException
-
createMessageProducer
protected javax.jms.MessageProducer createMessageProducer(javax.jms.Destination destination, Context context) throws javax.jms.JMSException- Throws:
javax.jms.JMSException
-
setMessageProducerProperties
protected void setMessageProducerProperties() throws org.smooks.api.SmooksConfigExceptionSets the following MessageProducer properties:- TimeToLive
- Priority
- DeliveryMode
Subclasses may override this behaviour.
- Throws:
org.smooks.api.SmooksConfigException
-
sendMessage
protected void sendMessage(javax.jms.Message message) throws SmooksRoutingException- Throws:
SmooksRoutingException
-
close
protected void close(javax.jms.Connection connection)
-
close
protected void close(javax.jms.Session session)
-
getDestination
public javax.jms.Destination getDestination()
-
getJndiContextFactory
public String getJndiContextFactory()
-
getJndiProviderUrl
public String getJndiProviderUrl()
-
getJndiNamingFactoryUrl
public String getJndiNamingFactoryUrl()
-
getDestinationName
public String getDestinationName()
-
getDeliveryMode
public String getDeliveryMode()
-
getTimeToLive
public long getTimeToLive()
-
getSecurityPrincipal
public String getSecurityPrincipal()
-
getSecurityCredential
public String getSecurityCredential()
-
isTransacted
public boolean isTransacted()
-
getConnectionFactoryName
public String getConnectionFactoryName()
-
getPriority
public int getPriority()
-
getAcknowledgeMode
public String getAcknowledgeMode()
-
setMsgCreationStrategy
public void setMsgCreationStrategy(MessageCreationStrategy msgCreationStrategy)
-
-