由于客户端发送和接收的“有效负荷”消息和 Message Queue 自身使用的控制消息(如代理确认消息)通过同一个客户端/代理连接进行传递,因此有效负荷流量过多将会干扰控制消息的传送。为了帮助缓解这个问题,可以使用表 16–5 中列出的连接工厂属性来管理两种消息的相对流量。这些属性分为以下四个类别:
确认超时指定等待代理确认的最长时间 (imqAckTimeout),超出此时间后将会抛出异常。
连接流计量通过将有效负荷消息拆分成具有指定大小 (imqConnectionFlowCount) 的若干批消息来限制有效负荷消息的传输,从而确保可以定期传送任何堆积的控制消息。
连接流控制限制有效负荷消息的数量 (imqConnectionFlowLimit),这些消息可以在连接上保持待处理状态,以等待使用。达到限制之后,将会暂停向连接传送有效负荷消息,直到等待使用的消息数低于该限制为止。此功能的使用受布尔标志 (imqConnectionFlowLimitEnabled) 控制。
使用方流控制限制有效负荷消息的数量 (imqConsumerFlowLimit),这些消息可以针对任何单个使用方保持待处理状态,以等待使用。 (也可以将此限制指定为特定队列目的地的属性 consumerFlowLimit。)达到该限制时,将会暂停向使用方传送有效负荷消息,直到等待使用的消息数(以 imqConsumerFlowLimit 的百分比表示)低于 imqConsumerFlowThreshold 属性指定的限制为止。这有助于防止同一连接上的任一使用方抢占其他使用方的流量,从而改善多个使用方之间的负载平衡。
使用上述流控制技术中的任何一种都需要在可靠性和吞吐量之间进行权衡;有关详细论述,请参见客户端运行时环境消息流调整。