Oracle GlassFish Message Queue 4.4.2 Administration Guide

Reliability and Flow Control

Table 19–5 lists the connection factory attributes for reliability and flow control.

Table 19–5 Connection Factory Attributes for Reliability and Flow Control

Attribute 

Type 

Default Value 

Description 

imqAckTimeout

String 

0

Maximum time, in milliseconds, to wait for broker acknowledgment before throwing an exception 

A value of 0 denotes no timeout (wait indefinitely).


Note –

In some situations, too low a value can cause premature timeout: for example, initial authentication of a user against an LDAP user repository using a secure (SSL) connection can take more than 30 seconds.


imqConnectionFlowCount

Integer 

100

Number of payload messages in a metered batch 

Delivery of payload messages to the client is temporarily suspended after this number of messages, allowing any accumulated control messages to be delivered. Payload message delivery is resumed on notification by the client runtime, and continues until the count is again reached.  

A value of 0 disables metering of message delivery and may cause Message Queue control messages to be blocked by heavy payload message traffic.

imqConnectionFlowLimitEnabled

Boolean 

false

Limit message flow at connection level?  

imqConnectionFlowLimit

Integer 

1000

Maximum number of messages per connection to deliver and buffer for consumption 

Message delivery on a connection stops when the number of unconsumed payload messages pending (subject to flow metering governed by imqConnectionFlowCount) exceeds this limit. Delivery resumes only when the number of pending messages falls below the limit. This prevents the client from being overwhelmed with pending messages that might cause it to run out of memory.

This attribute is ignored if imqConnectionFlowLimitEnabled is false.

imqConsumerFlowLimit

Integer 

1000

Maximum number of messages per consumer to deliver and buffer for consumption 

Message delivery to a given consumer stops when the number of unconsumed payload messages pending for that consumer exceeds this limit. Delivery resumes only when the number of pending messages for the consumer falls below the percentage specified by imqConsumerFlowThreshold. This can be used to improve load balancing among multiple consumers and prevent any single consumer from starving others on the same connection.

This limit can be overridden by a lower value set for a queue’s own consumerFlowLimit attribute (see Chapter 18, Physical Destination Property Reference). Note also that message delivery to all consumers on a connection is subject to the overall limit specified by imqConnectionFlowLimit.

imqConsumerFlowThreshold

Integer 

50

Number of messages per consumer buffered in the client runtime, as a percentage of imqConsumerFlowLimit, below which to resume message delivery