## Add Connection Factory Object >
Reliability and Flow Control

Use this tab to specify the use of Message Queue control messages (broker acknowledgements) and flow control measures by the client runtime..

Message Service Acknowledgement of Produced Messages Specifies broker acnowledgement of messages from producing client:

- If set to true, the broker acknowledges receipt of all JMS messages (persistent and non-persistent) from producing client, and producing client thread will block waiting for those acknowledgements.
- If set to false, broker does not acknowledge receipt of any JMS message (persistent or non-persistent) from producing client, and producing client thread will not block waiting for broker acknowledgements.
- If not specified, broker acknowledges receipt of persistent messages only, and producing client thread will block waiting for those acknowledgements.

Message Service Acknowledgement of Client Acknowledgements Specifies broker acnowledgement of consuming client acknowledements:

- If set to true, broker acknowledges all consuming client acknowledgements, and consuming client thread will block waiting for such broker acknowledgements.
- If set to false, broker does not acknowledge any consuming client acknowledgements, and consuming client thread will not block waiting for such broker acknowledgements.
- If not specified, broker acknowledges consuming client acknowledgements for AUTO_ACKNOWLEDGE and CLIENT_ACKNOWLEDGE mode (and consuming client thread will block waiting for such broker acknowledgements), but does not acknowledge consuming client acknowledgements for DUPS_OK_ACKNOWLEDGE mode (and consuming client thread will not block.)

Message Service Acknowledgement Timeout (milliseconds) Specifies the maximum time in milliseconds that the client runtime will wait for any broker acknowledgement before throwing an exception. The default value of 0 means that there is no timeout - in other words, the client runtime will wait forever.

Connection Flow Count Specifies the maximum number of JMS messages in a metered batch. When this number of JMS messages is delivered to the client runtime, delivery is temporarily suspended, allowing any control messages that had been held up to be delivered. JMS message delivery is resumed upon notification by the client runtime, and continues until the count is again reached. If the count is set to 0 then there is no restriction in the number of JMS messages in a metered batch. A non-zero setting allows the client runtime to meter message flow so that Message Queue control messages are not blocked by heavy JMS message delivery and are allowed to flow to the client between metered batches.

Connection Flow Limit Enabled Specifies whether to enable a connection flow limit (on the number of unconsumed messages delivered to the client runtime). If this box is checked, you must specify a positive number for the Connection Flow Limit field.

Connection Flow Limit (Unconsumed Messages per Connection) Specifies a limit on the number of messages that can be delivered over a connection and buffered in the client runtime, waiting to be consumed (only used if Connection Flow Limits Enabled is checked). When the number of JMS messages delivered to the client runtime (in accordance with the flow metering governed by Connection Flow Count) exceeds this limit, message delivery stops. It is resumed only when the number of unconsumed messages drops below the value set with this property. This limit prevents a consuming client that is taking a long time to process messages from being overwhelmed with pending messages that might cause it to run out of memory.

Consumer Flow Limit (Unconsumed Messages per Consumer) Specifies a limit on the number of messages per consumer that can be delivered over a connection and buffered in the client runtime. This limit has two uses: it can improve load-balancing among consumers in multi-consumer queue delivery situations (no one consumer can be sent a disproportionate number of messages), and it helps prevent any one consumer on a connection from overwhelming other consumers on the connection. When the number of JMS messages delivered to the client runtime exceeds this limit for any consumer, message delivery for that consumer stops. It is resumed only when the number of unconsumed messages for that consumer drops below the value set with the Consumer Flow Threshold.

Note that if the total number of messages buffered for all consumers on a connection exceeds the Connection Flow Limit, then delivery of messages through the connection will stop until that total drops below that limit. If you specify a Consumer Flow Limit, there is little need to set Connection Flow Limit except in the most specialized of cases and most application requirements for message flow metering will be met by setting Consumer Flow Limit instead of enabling the Connection Flow Limit.

Consumer Flow Threshold (Percent) Specifies, as a percentage of Consumer Flow Limit, the number of messages per consumer buffered in the client runtime, below which delivery of messages for a consumer will resume.