You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

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. (smile)

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

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.

  • No labels