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

JMS Simple Queue Message Receiver

Ballerina natively supports JMS. Here is an example where we create a simple JMS queue consumer.

import ballerina/jms;
import ballerina/log;
endpoint jms:SimpleQueueReceiver consumer {
    initialContextFactory: "wso2mbInitialContextFactory",
    providerUrl: "amqp://admin:admin@carbon/carbon?brokerlist='tcp://localhost:5672'",
    acknowledgementMode: "AUTO_ACKNOWLEDGE",
    queueName: "MyQueue"
};

Create a simple queue receiver

service<jms:Consumer> jmsListener bind consumer {

Bind the created consumer to the listener service.

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

OnMessage resource get invoked when a message is received.

$ ballerina run jms-simple-queue-message-listener.bal

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

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