Back to Examples
- Binding patterns
- Typed binding pattern
- Wildcard binding pattern
- List binding patterns
- Rest binding pattern in list binding pattern
- Mapping binding pattern
- Rest binding pattern in mapping binding pattern
- Error binding pattern
- Rest binding pattern in error binding pattern
- Single use of typed binding patterns
- Single use of typed binding patterns with on fail clause
- Iterative use of typed binding patterns
- List binding pattern in match statement
- Mapping binding pattern in match statement
- Error binding pattern in match statement
- Query expressions
- Sort iterable objects
- Let clause
- Limit clause
- Join iterable objects
- Outer Join clause
- Query tables
- Create tables with a query
- Create maps with a query
- Create streams with a query
- On conflict clause
- Advanced conflict handling
- Iterate over XML with a query
- Nested query expressions
- Destructure records using a query
- Querying streams
- Aggregation
- JSON type
- Access JSON elements
- Access optional JSON elements
- Match statement with maps
- Convert from user-defined type to JSON
- Convert from table and XML to JSON
- Convert from JSON to user-defined type
- Cast JSON to user-defined type
- Resource method typing
- JSON numbers
- JSON to record
- JSON to record with projection
- JSONPath expressions
- Asynchronous function calls
- Named workers
- Sequence diagrams
- Wait for workers
- Strands
- Named worker return values
- Alternate wait
- Multiple wait
- Named workers and futures
- Inter-worker message passing
- Alternate receive
- Multiple receive
- Conditional send
- Inter-worker failure propagation
- Named worker with on fail clause
- Synchronize message passing
- Asynchronize message passing
- Flush
- Fork
JMS message producer - Manual acknowledgment
The jms:MessageConsumer
allows manual acknowledgment for received messages. A jms:MessageConsumer
can be initialized by using a jms:Session
object. To configure manual acknowledgment mode, create a jms:Session
object with the acknowledge mode set to jms:CLIENT_ACKNOWLEDGE
.
import ballerina/io;
import ballerinax/java.jms;
import ballerinax/activemq.driver as _;
public function main() returns error? {
jms:Connection connection = check new (
initialContextFactory = "org.apache.activemq.jndi.ActiveMQInitialContextFactory",
providerUrl = "tcp://localhost:61616"
);
jms:Session session = check connection->createSession(jms:CLIENT_ACKNOWLEDGE);
jms:MessageConsumer consumer = check session.createConsumer(destination = {
'type: jms:QUEUE,
name: "order-queue"
});
jms:Message? message = check consumer->receive(5000);
if message is jms:MapMessage {
map<anydata> payload = message.content;
int|error orderId = payload["orderId"].ensureType();
if orderId is int {
io:println("Received message from the JMS provider", orderId);
check consumer->acknowledge(message);
}
}
}
Prerequisites
Start a ActiveMQ broker instance.
Run the program by executing the following command.
$ bal run jms_consumer_acknowledgement.bal
Tip: Run the JMS message producer given in the JMS message producer - Produce message example to produce a few sample messages to the queue.
Related links
PreviousConsume message
NextSend/Receive bytes