The WSO2 ESB JMS inbound protocol is a multi-tenant capable alternative to the WSO2 ESB JMS transport. The JMS inbound protocol implementation requires an active JMS server instance to be able to receive messages, and you need to place the client JARs for your JMS server in the ESB classpath.
The recommended JMS servers are WSO2 Message Broker or Apache ActiveMQ, but other implementations such as Apache Qpid and Tibco are also supported.
- To configure the JMS inbound protocol with WSO2 Message Broker , see Configuring the JMS Inbound Protocol with WSO2 Message Broker.
- To configure the JMS inbound protocol with ActiveMQ, see Configuring the JMS Inbound Protocol with ActiveMQ.
Configuration parameters for a JMS inbound endpoint are XML fragments that represent JMS connection factories.
Following is a sample JMS inbound endpoint configuration:
<inboundEndpoint xmlns="http://ws.apache.org/ns/synapse" name="jms" sequence="request" onError="fault" protocol="jms" suspend="false"> <parameters> <parameter name="interval">1000</parameter> <parameter name="coordination">true</parameter> <parameter name="transport.jms.Destination">ordersQueue</parameter> <parameter name="transport.jms.CacheLevel">1</parameter> <parameter name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter> <parameter name="sequential">true</parameter> <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter> <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter> <parameter name="transport.jms.SessionAcknowledgement">AUTO_ACKNOWLEDGE</parameter> <parameter name="transport.jms.SessionTransacted">false</parameter> <parameter name="transport.jms.ConnectionFactoryType">queue</parameter> </parameters> </inboundEndpoint>
JMS inbound endpoint parameters
Parameter Name | Description | Required | Possible Values | Default Value |
---|---|---|---|---|
java.naming.factory.initial | The JNDI initial context factory class. The class must implement the | Yes | A valid class name | - |
java.naming.provider.url | The URL of the JNDI provider. | Yes | A valid URL | - |
transport.jms.ConnectionFactoryJNDIName | The JNDI name of the connection factory. | Yes | - | - |
transport.jms.ConnectionFactoryType | The type of the connection factory. | No |
|
|
transport.jms.Destination | The JNDI name of the destination. | No | - | The defaults value is the service name. |
transport.jms.SessionTransacted | Whether the JMS session should be transacted or not. | No |
|
|
transport.jms.SessionAcknowledgement | The JMS session acknowledgment mode. | No |
|
|
transport.jms.CacheLevel | The JMS resource cache level. | No | 1 - |
|
transport.jms.UserName | The JMS connection username. | No | - | - |
transport.jms.Password | The JMS connection password. | No | - | - |
transport.jms.JMSSpecVersion | The JMS API version. | No |
|
|
transport.jms.SubscriptionDurable | Whether the connection factory is subscription durable or not. | No | true , false | false |
transport.jms.DurableSubscriberClientID | The ClientId parameter when using durable subscriptions. | Required if the value specified as transport.jms.SubscriptionDurable is true . | - | - |
transport.jms.DurableSubscriberName | The name of the durable subscriber. | Required if the value specified as | - | - |
transport.jms.MessageSelector | Message selector implementation. | No |
|
|
transport.jms.ReceiveTimeout | The time to wait for a JMS message during polling. Set this parameter value to a negative integer to wait indefinitely. Set it to zero to prevent waiting. | No | The number of milliseconds to wait. | 1 |
transport.jms.ContentType | How the inbound listener should determine the content type of received messages. Priority is always given to the JMS message type. | No | A simple string value, in which case the transport listener assumes that the received messages always have the specified content type, or a set of rules. For more information, see http://axis.apache.org/axis2/java/transports/jms.html#Service_configuration. | - |
transport.jms.ContentTypeProperty | Get the content type from message property | No | contentType | - |
transport.jms.ReplyDestination | The destination that the response generated by the back-end service is stored. | No | - | ReplyTo from the message |
transport.jms.PubSubNoLocal | Whether messages should be published via the same connection that they were received. | No | true, false | false |
Note
To subscribe to topics, set the value of transport.jms.CacheLevel
to 3
.
Samples
For a sample that demonstrates how one way message bridging from JMS to HTTP can be done using the JMS inbound endpoint, see Sample 901: Inbound Endpoint JMS Protocol Sample.