Use batch index acknowledgement with Starlight for JMS

Starlight for JMS improves acknowledgement of batched messages by supporting the tracking of 'ack' status by batch index.

By default, filtering works on the entry level in Pulsar. An entry is a single message, or a single batch of messages. The client cannot selectively filter messages in a batch; it either passes completely or fails completely.

With batch index acknowledgement, when the broker dispatches messages, it carries the batch index that has been acknowledged. Then, the client filters out batch indexes that have been acknowledged. Finally, the client sends the batch index acknowledgement information to the broker so the broker can maintain the batch index acknowledgement status.

DataStax strongly recommends using batch index acknowledgement for increased efficiency, whether using broker-side or client-side selectors.

Enable batch index acknowledgement

Batch index acknowledgement requires cooperation between the client and broker. You must modify both broker.conf and the consumerConfig JMS client property to enable batch acknowledgement:

  1. In your broker.conf file, add the configuration property acknowledgmentAtBatchIndexLevelEnabled and set it to true:

    acknowledgmentAtBatchIndexLevelEnabled=true
  2. In your Java project, set the consumerConfig property on the JMS client by adding consumerConfig.put("batchIndexAckEnabled", true); to consumerConfig in the ConnectionFactory configuration:

        Map<String, Object> properties = new HashMap<>();
        properties.put("webServiceUrl", cluster.getAddress());
        Map<String, Object> consumerConfig = new HashMap<>();
        consumerConfig.put("batchIndexAckEnabled", true);
        properties.put("consumerConfig", consumerConfig);
        try (PulsarConnectionFactory factory = new PulsarConnectionFactory(properties));

Was this helpful?

Give Feedback

How can we improve the documentation?

© Copyright IBM Corporation 2026 | Privacy policy | Terms of use Manage Privacy Choices

Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Pulsar, Pulsar, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries. Kubernetes is the registered trademark of the Linux Foundation.

General Inquiries: Contact IBM