Configuring the JMSInput node for batch message processing

Configure JMS message flows to send a batch acknowledgment for receipt of non-transactional JMS messages.

About this task

When the JMSInput node works in non-transactional mode, receipt and acknowledgment of messages take place in one step, followed by the message processing. In some scenarios, this acknowledgment response to the JMS server for each message might create an unacceptable level of network traffic. For example, using this messaging model to receive JMS messages across a wide area network that is already handling large volumes of traffic might result in non-optimal throughput rates for JMS messages.

The JMSInput node can acknowledge message receipt in batches rather than individually for non-transactional messages. Batch acknowledgment is enabled using the JMSProviders configurable service properties clientAckBatchSize and clientAckBatchTime. You can set these properties separately, or use them together, to tune the number of messages that are received and processed by the node before an acknowledgment response is returned to the source JMS server.

clientAckBatchSize
This an integer value that represents the threshold number of messages received before the batch acknowledgment is sent.
clientAckBatchTime
This is an integer value that represents the length, in milliseconds, of a repeating interval. At the end of each interval a batch acknowledgment is sent for all unacknowledged non-transactional JMS messages that were received during the preceding interval.
A batch acknowledgment is also sent when:
  • There are no more input messages on the JMS server
  • An error occurs during message processing. In this case, all previous messages in the batch that were successfully processed are first acknowledged, before handling the error.
  • The message flow stops.

To disable batch acknowledgment, set both clientAckBatchSize and clientAckBatchTime to 0.