import ballerina/jms;
import ballerina/log;
endpoint jms:SimpleDurableTopicSubscriber subscriber {
    initialContextFactory: "wso2mbInitialContextFactory",
    providerUrl: "amqp://admin:admin@carbon/carbon?brokerlist='tcp://localhost:5672'",
    acknowledgementMode: "AUTO_ACKNOWLEDGE",
    topicPattern: "BallerinaTopic",
    identifier: "sub1"
};
service<jms:Consumer> jmsListener bind subscriber {
    onMessage(endpoint consumer, jms:Message message) {
        string messageText = check message.getTextMessageContent();
        log:printInfo("Message : " + messageText);
  }
}

JMS Simple Durable Topic Message Subscriber

Ballerina natively supports JMS. Here is an example where we create a simple JMS durable topic subscriber.

import ballerina/jms;
import ballerina/log;
endpoint jms:SimpleDurableTopicSubscriber subscriber {
    initialContextFactory: "wso2mbInitialContextFactory",
    providerUrl: "amqp://admin:admin@carbon/carbon?brokerlist='tcp://localhost:5672'",
    acknowledgementMode: "AUTO_ACKNOWLEDGE",
    topicPattern: "BallerinaTopic",
    identifier: "sub1"
};

Create a simple durable topic subscriber.

service<jms:Consumer> jmsListener bind subscriber {

Bind the created subscriber to the listener service.

    onMessage(endpoint consumer, jms:Message message) {
        string messageText = check message.getTextMessageContent();
        log:printInfo("Message : " + messageText);
  }
}

The OnMessage resource is invoked when a message is received.

$ ballerina run jms-simple-durable-topic-message-subscriber.bal

To run the program, put the code in jms-simple-durable-topic-message-subscriber.bal and use $BALLERINA_HOME/bin/ballerina.

JMS subscriber run as a Ballerina service listening on the subscribed topic