Available as of Camel 2.11
SJMS Component
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> <!-- use the same version as your Camel core 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:
sjms:FOO.BAR
You can include the optional queue:
prefix, if you prefer:
sjms:queue:FOO.BAR
To connect to a topic, you must include the topic:
prefix. For example, to connect to the topic, Stocks.Prices
, use:
sjms:topic:Stocks.Prices
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://localhost:61616")); 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://localhost:61616")); 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 |
---|---|---|
|
|
The JMS acknowledgement name, which is one of: |
|
|
Defines the number of MessageListener instances that will be used with the InOut endpoint. |
|
|
Sets the Producers message exchange pattern. |
|
|
Specifies a named reply to destination for InOut endpoint. |
|
|
Defines the number of MessageProducer instances. |
|
|
Specifies the amount of time an InOutProducer will wait for its response. |
|
|
Sets whether the Endpoint will use synchronous or asynchronous processing. |
|
|
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.