JMS Message Store persists messages in a JMS queue inside a JMS Broker. It can be configured by giving the class value as org.apache.synapse.message.store.impl.jms.JmsStore
. Since they persist messages in a JMS queue in an ordered manner, JMS message stores can be used to implement a store-and-forward pattern that has quality-of-service parameters like guaranteed delivery and reliability.
...
Parameter Name | Value | Required |
---|---|---|
java.naming.factory.initial | Initial Context Factory to use to connect to the JMS broker | YES |
java.naming.provider.url | Url of the naming provider to be used by the context factory | YES |
store.jms.destination | JNDI Name of the Queue Name that message store is connecting | NO but for some JMS clients this will be needed |
store.jms.connection.factory | JNDI name of the Connection factory which is used to create jms connections | NO but for some JMS clients this will be needed |
store.jms.username | User Name that is used to create the connection with the broker | NO |
store.jms.password | Password that is used to create the connection with the broker | NO |
store.jms.JMSSpecVersion | 1.1 or 1.0 JMS API specification to be used (Default 1.1) | NO |
store.jms.cache.connection | true/false Enable Connection caching | NO |
vender.class.loader.enabled | Set to false when using IBM MQ, which requires skipping the external class loader. | NO except when using IBM MQ |
For more information about message stores, see Message Stores .
UI Configuration
- Click On the Management Console, click Message Stores in on the left navigator of the main tab to open the . This opens the Manage Message StoresStores page.
- Click Click the Add Message Stores tab and then click Add JMS Message Store to open . This opens the JMS Message Store page with its default view.
The following parameters are specific to the JMS Message Store:
- Name - The unique name of the message store.
- Initial Context Factore - The initial context factory to be used to connect to the JMS broker.
- Provider URL - The url of the naming provider to be used by the context factory.
- If you want to configure the additional parameters, click Show Additional Parameters.
Then the page with all the available JMS Message Store options appears.
...
- JNDI Queue Name - JNDI Name of the Queue Name that message store is connecting
- Connection factory - JNDI name of the Connection factory which is used to create jms connections
- User Name - User Name that is used to create the connection with the broker
- Password - Password that is used to create the connection with the broker
- JMS API specification Version - 1.1 or 1.0 JMS API specification to be used (Default 1.1)
- Enable Connection caching - true/false Enable Connection caching
Following is a sample JMS message store configuration that uses WSO2 MB as the message broker:
Code Block | ||
---|---|---|
| ||
<messageStore name="JMSMS" class="org.apache.synapse.message.store.impl.jms.JmsStore" xmlns="http://ws.apache.org/ns/synapse">
<parameter name="java.naming.factory.initial">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
<parameter name="java.naming.provider.url">repository/conf/jndi.properties</parameter>
<parameter name="store.jms.destination">ordersQueue</parameter>
<parameter name="store.jms.connection.factory">queue</parameter>
<parameter name="store.jms.JMSSpecVersion">1.1</parameter>
</messageStore> |
Following is a sample JMS message store configuration that uses ActiveMQ as the message broker:
Code Block | |
---|---|
|
...
| |
<messageStore name="JMSMS" class="org.apache.synapse.message.store.impl.jms.JmsStore" xmlns="http://ws.apache.org/ns/synapse">
<parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
<parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
<parameter name="store.jms.destination">ordersQueue</parameter>
<parameter name="store.jms.connection.factory">queue</parameter>
<parameter name="store.jms.JMSSpecVersion">1.1</parameter>
</messageStore> |
Info | ||
---|---|---|
| ||
When configuring a JMS message store with WSO2 MB or Active MQ you need to copy the required client libraries to the For information on the client libraries you need to copy when configuring a JMS message store with WSO2 MB, see Configure with WSO2 Message Broker. For information on the client libraries you need to copy when configuring a JMS message store with ActiveMQ, see Configure with ActiveMQ. |
Individual message priorities can be set using the following property
...
on the provider. For example, the value can be 0-9 for ActiveMQ.
<property name="JMS_
...
PRIORITY" value="9" scope="axis2"/>
...
...
Note | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
If you are using ActiveMQ 5.12.2 and above, you need to set the following system property on server start up for WSO2 ESB's JMS message store to work as expected.
With ActiveMQ 5.12.2 and above, you need to set the above property because users are enforced to explicitly whitelist packages that can be exchanged using ObjectMessages, and due to this restriction the message processor fails to read messages from ActiveMQ with the following error:
|
For information on configuring the JMS message store with different message brokers, see Store and Forward Using JMS Message Stores.
Excerpt | ||
---|---|---|
| ||
Description of JMS Message Store. |