最重要的连接处理属性是 imqAddressList ,该属性指定了要与之建立连接的一个或多个代理。该属性的值是一个字符串,它包含一个代理地址或者以逗号分隔的多个地址(如果是代理群集)。根据要使用的连接服务(请参见连接服务)和建立连接的方法,代理地址可以使用各种寻址方案:
mq,该方案使用代理的端口映射器为 jms 或 ssljms 连接服务动态指定端口。
mqtcp,该方案通过使用 jms 连接服务绕过端口映射器,而直接连接到指定端口。
mqssl,该方案通过使用 ssljms 连接服务与指定端口建立安全套接字层 (Secure Socket Layer, SSL) 连接。
http,该方案通过使用 httpjms 连接服务与指定 URL 处的 Message Queue 隧道 Servlet 建立超文本传输协议 (Hypertext Transport Protocol, HTTP) 连接。
https,该方案通过使用 httpsjms 连接服务与指定 URL 处的 Message Queue 隧道 Servlet 建立安全超文本传输协议 (Secure Hypertext Transport Protocol, HTTPS) 连接。
表 16–2 概述了这些寻址方案。
每个代理地址的通用格式为:
scheme://address
其中 scheme 是上面列出的寻址方案之一,而 address 表示代理地址本身。用于指定地址的准确语法因寻址方案而异,如表 16–2 中的最后一列所示。表 16–3 提供了各种地址格式的示例。
在多代理群集环境中,地址列表可能包含多个代理地址。如果第一次连接尝试失败,Message Queue 客户端运行时环境将尝试连接到列表中的另一个地址,依此类推,直到尝试完列表中的所有地址为止。其他两个连接工厂属性控制上述操作的执行方式:
imqAddressListBehavior 指定了尝试连接指定地址的顺序。如果将此属性设置为字符串 PRIORITY,将按地址在地址列表中的显示顺序尝试连接。如果属性值为 RANDOM,将按随机顺序尝试连接地址;这种方式非常有用,例如,当许多 Message Queue 客户端共享同一个连接工厂对象时,这种方式有助于防止所有客户端尝试连接到同一个代理地址。
imqAddressListIterations 指定了循环访问列表的次数,超过该次数后,将放弃尝试并报告故障。值为 -1 表示不限制重复次数:客户端运行时环境将一直尝试下去,直到成功建立连接或到达结束时间为止(以最先出现的情况为准)。