Skip to main content

Actions

The ballerinax/java.jms package exposes the following clients:

ClientPurpose
ConnectionEstablishes a connection to the JMS broker and creates sessions.
SessionManages transactions and creates message producers and consumers.
Message ProducerSends messages to JMS queues and topics.
Message ConsumerReceives and acknowledges messages from JMS queues and topics.

For event-driven integration, see the Trigger Reference.


Connection

Establishes a connection to the JMS broker and creates sessions.

Configuration

FieldTypeDefaultDescription
initialContextFactorystringRequiredJNDI initial context factory class (e.g., org.apache.activemq.jndi.ActiveMQInitialContextFactory).
providerUrlstringRequiredJMS provider URL (e.g., tcp://localhost:61616).
connectionFactoryNamestring"ConnectionFactory"JNDI name of the connection factory.
usernamestring()Username for broker authentication.
passwordstring()Password for broker authentication.
propertiesmap<string>{}Additional JNDI properties.

Initializing the client

import ballerinax/java.jms;

configurable string providerUrl = ?;

jms:Connection connection = check new ({
initialContextFactory: "org.apache.activemq.jndi.ActiveMQInitialContextFactory",
providerUrl: providerUrl
});

Operations

Connection lifecycle

createSession

Creates a new JMS session with the specified acknowledgement mode.

Parameters:

NameTypeRequiredDescription
ackModeAcknowledgementModeNoSession acknowledgement mode. One of AUTO_ACKNOWLEDGE, CLIENT_ACKNOWLEDGE, SESSION_TRANSACTED, or DUPS_OK_ACKNOWLEDGE.

Returns: jms:Session|jms:Error

Sample code:

jms:Session session = check connection->createSession(jms:AUTO_ACKNOWLEDGE);

Sample response:

jms:Session object
start

Starts the connection, enabling message delivery.

Returns: jms:Error?

Sample code:

check connection->start();
stop

Temporarily stops message delivery on the connection.

Returns: jms:Error?

Sample code:

check connection->stop();
close

Closes the connection and releases all resources.

Returns: jms:Error?

Sample code:

check connection->close();

Session

Manages transactions and creates message producers and consumers.

Configuration

FieldTypeDefaultDescription
connectionjms:ConnectionRequiredThe JMS connection to create the session from.
ackModeAcknowledgementModeAUTO_ACKNOWLEDGESession acknowledgement mode.

Initializing the client

import ballerinax/java.jms;

// Sessions are typically created from a Connection:
jms:Session session = check connection->createSession(jms:AUTO_ACKNOWLEDGE);

Operations

Producer and consumer creation

createProducer

Creates a message producer, optionally bound to a default destination.

Parameters:

NameTypeRequiredDescription
destinationDestination?NoDefault destination for the producer. If omitted, a destination must be specified per message.

Returns: jms:MessageProducer|jms:Error

Sample code:

jms:MessageProducer producer = check session.createProducer();

Sample response:

jms:MessageProducer object
createConsumer

Creates a message consumer for the specified destination.

Parameters:

NameTypeRequiredDescription
destinationDestinationYesThe queue or topic to consume from.
typeConsumerTypeNoConsumer type: DEFAULT, DURABLE, SHARED, or SHARED_DURABLE.
messageSelectorstringNoJMS message selector expression to filter messages.
noLocalbooleanNoIf true, messages published by this connection's producers are not delivered.
subscriberNamestringNoSubscription name, required for durable and shared-durable consumers.

Returns: jms:MessageConsumer|jms:Error

Sample code:

jms:MessageConsumer consumer = check session.createConsumer(
destination = {'type: jms:QUEUE, name: "orders"}
);

Sample response:

jms:MessageConsumer object

Transaction control

commit

Commits all messages sent or received in the current transaction.

Returns: jms:Error?

Sample code:

check session->commit();
rollback

Rolls back all messages sent or received in the current transaction.

Returns: jms:Error?

Sample code:

check session->rollback();

Subscription management

unsubscribe

Removes a durable subscription by its subscription identifier.

Parameters:

NameTypeRequiredDescription
subscriptionIdstringYesThe name of the durable subscription to remove.

Returns: jms:Error?

Sample code:

check session->unsubscribe("my-durable-sub");
close

Closes the session and releases resources.

Returns: jms:Error?

Sample code:

check session->close();

Message producer

Sends messages to JMS queues and topics.

Configuration

FieldTypeDefaultDescription
sessionjms:SessionRequiredThe JMS session used to create this producer.
destinationDestination?()Default destination. If set, send uses this destination.

Initializing the client

import ballerinax/java.jms;

// Producers are typically created from a Session:
jms:MessageProducer producer = check session.createProducer();

Operations

Send operations

send

Sends a message to the producer's default destination.

Parameters:

NameTypeRequiredDescription
messageMessageYesThe JMS message to send. Content can be string, map<Value>, or byte[].

Returns: jms:Error?

Sample code:

check producer->send({
content: "Hello from Ballerina!"
});
sendTo

Sends a message to a specified destination, overriding the default.

Parameters:

NameTypeRequiredDescription
destinationDestinationYesThe target queue or topic.
messageMessageYesThe JMS message to send.

Returns: jms:Error?

Sample code:

check producer->sendTo(
{'type: jms:QUEUE, name: "orders"},
{content: orderPayload.toJsonString().toBytes()}
);
close

Closes the producer and releases resources.

Returns: jms:Error?

Sample code:

check producer->close();

Message consumer

Receives and acknowledges messages from JMS queues and topics.

Configuration

FieldTypeDefaultDescription
destinationDestinationRequiredThe queue or topic to consume from.
typeConsumerTypeDEFAULTConsumer type: DEFAULT, DURABLE, SHARED, or SHARED_DURABLE.
messageSelectorstring""JMS message selector expression to filter messages.
noLocalbooleanfalseIf true, excludes messages published by this connection's own producers.
subscriberNamestring()Subscription name, required for DURABLE and SHARED_DURABLE types.

Initializing the client

import ballerinax/java.jms;

// Consumers are typically created from a Session:
jms:MessageConsumer consumer = check session.createConsumer(
destination = {'type: jms:QUEUE, name: "orders"}
);

Operations

Receive operations

receive

Receives the next message from the destination, blocking until a message arrives or the timeout expires.

Parameters:

NameTypeRequiredDescription
timeoutMillisintNoMaximum time to wait in milliseconds. Defaults to 10000.

Returns: jms:Message|jms:Error?

Sample code:

jms:Message? message = check consumer->receive(5000);

Sample response:

{"messageId": "ID:localhost-12345-1234567890", "timestamp": 1710600000000, "content": "Hello from Ballerina!", "priority": 4, "redelivered": false}
receiveNoWait

Receives the next available message without blocking. Returns () if no message is available.

Returns: jms:Message|jms:Error?

Sample code:

jms:Message? message = check consumer->receiveNoWait();

Sample response:

{"messageId": "ID:localhost-12345-1234567891", "timestamp": 1710600001000, "content": {"orderId": "ORD-001", "item": "Pizza"}, "priority": 4}

Acknowledgement

acknowledge

Acknowledges a received message. Used when the session is in CLIENT_ACKNOWLEDGE mode.

Parameters:

NameTypeRequiredDescription
messageMessageYesThe message to acknowledge.

Returns: jms:Error?

Sample code:

check consumer->acknowledge(message);
close

Closes the consumer and releases resources.

Returns: jms:Error?

Sample code:

check consumer->close();