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

Compare with Current View Page History

« Previous Version 8 Next »

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:

Unknown macro: {div}

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.

  • No labels