每个连接服务仅在由主机名(或 IP 地址)和端口号指定的特定端口上可用。 您可以明确地为服务指定静态端口号,也可以让代理的端口映射器动态指定端口号。端口映射器自身驻留在代理的主端口上,该端口通常位于标准端口号 7676 上。(如果需要,您可以通过代理配置属性 imq.portmapper.port,用其他端口号来覆盖标准端口号。) 默认情况下,每个连接服务在启动时都在端口映射器中注册自身。当客户端创建与代理的连接时,Message Queue 客户端运行时环境首先与端口映射器联系,为所需的连接服务请求端口号。
或者,也可以使用 imq.serviceName.protocolType. port 配置属性(其中 serviceName 和 protocolType 标识特定的连接服务, 如表 4–1 中所示)来覆盖端口映射器的设置,并明确地为连接服务指定一个静态端口号。(只有 jms、 ssljms、admin 和 ssladmin 连接服务可以通过这种方式进行配置;httpjms 和 httpsjms 服务使用不同的配置属性,如附录 C,HTTP/HTTPS 支持 中所述。)但是,静态端口通常仅在特殊情况下(例如要穿过防火墙建立连接)使用(请参见通过防火墙连接),建议不要在一般情况下使用静态端口。
如果有两个或更多的主机可用(例如,在一台计算机中安装了多个网卡),则可以使用代理属性来指定连接服务应该绑定到哪个主机。 imq.hostname 属性为所有连接服务指定一个默认主机;如果需要,以后可以使用 imq.serviceName. protocolType.hostname (对于 jms、 ssljms、admin 或 ssladmin 服务)或imq.portmapper.hostname(对于端口映射器自身)来覆盖此默认值。
如果同时收到多个端口映射器请求,则它们将存储在操作系统后备队列 (backlog) 中等待操作。 imq.portmapper.backlog 属性指定后备队列中的请求的最大数量。 如果超过此限制,随后的任何请求都将被拒绝,直到后备队列中的请求减少。