SJMS Component
Available as of Camel 2.11
The SJMS Component is a JMS client for Camel based purely on the JMS API. It will be released as part of Camel 2.11 with the following functionality:
- Queue and Topic Support (Durable & Non-Durable)
- InOnly & InOut Support
- Plugable Connection Resource Management
- Session, Consumer, & Producer Pooling & Caching Management
- Asynchronous Producer and Consumer Processing
- Internal JMS Transaction Support
![]() | Why the S in SJMS S stands for Simple and Standard and Springless. Also camel-jms was already taken. ![]() |
Maven users will need to add the following dependency to their pom.xml for this component:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-sjms</artifactId>
<version>x.x.x</version>
</dependency>
URI format
sjms:[queue:|topic:]destinationName[?options]
Where destinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name. For example, to connect to the queue, FOO.BAR use:
You can include the optional queue: prefix, if you prefer:
To connect to a topic, you must include the topic: prefix. For example, to connect to the topic, Stocks.Prices, use:
You append query options to the URI using the following format, ?option=value&option=value&...
SjmsComponent Options and Configurations
Below is an example of how to configure the SjmsComponent with its required ConnectionFactory provider. It will create a single connection by default and store it using the components internal pooling APIs to ensure that it is able to service Session creation requests in a thread safe manner.
SjmsComponent component = new SjmsComponent();
component.setConnectionFactory(new ActiveMQConnectionFactory("tcp:));
getContext().addComponent("sjms", component);
For a SjmsComponent that is required to support a durable subscription, you can override the default ConnectionFactoryResource instance and set the clientId property.
ConnectionFactoryResource connectionResource = new ConnectionFactoryResource();
connectionResource.setConnectionFactory(new ActiveMQConnectionFactory("tcp:));
connectionResource.setClientId("myclient-id");
SjmsComponent component = new SjmsComponent();
component.setConnectionResource(connectionResource);
component.setMaxConnections(1);
Producers
The SjmsProducer Endpoint supports the following properties:
Option |
Default Value |
Description |
acknowledgementMode |
AUTO_ACKNOWLEDGE |
The JMS acknowledgement name, which is one of: TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE |
consumerCount |
1 |
Defines the number of MessageListener instances that will be used with the InOut endpoint. |
exchangePattern |
InOnly |
Sets the Producers message exchange pattern. |
namedReplyTo |
null |
Specifies a named reply to destination for InOut endpoint. |
producerCount |
1 |
Defines the number of MessageProducer instances. |
responseTimeOut |
5000 |
Specifies the amount of time an InOutProducer will wait for its response. |
synchronous |
true |
Sets whether the Endpoint will use synchronous or asynchronous processing. |
ttl |
-1 |
Disabled by default. Sets the Message time to live header. |
InOnly Producer - (Default)
The InOnly Producer is the default behavior of the SJMS Producer Endpoint.
from("direct:start")
.to("sjms:queue:bar");
InOut Producer
To enable InOut behavior with the
from("direct:start")
.to("sjms:queue:bar?exchangePattern=InOut");
SJMS Consumer
Transactions
There is currently no support the Camel Transaction Processor nor does it support the Camel Transaction API.