使用与连接有关的属性,可以配置和管理代理与客户端之间的物理连接。Message Queue 客户端使用的连接服务将在连接到代理中进行介绍,该节介绍了可用的连接服务,包括它们的名称、类型和底层协议。连接服务是多线程的,并可以通过专用端口使用。专用端口可以由代理的端口映射器动态分配,也可以由管理员静态分配。默认情况下,当启动代理时,会启动并运行 jms 和 admin 服务。
因为每个连接都存在两方,所以连接配置会发生在每一方并需要协调:
客户端必须配置连接工厂对象的某些属性才能执行以下操作:请求非默认的连接服务、主机和端口;指定在需要重新连接到另一个代理时可连接到的代理的列表;配置重新连接行为。客户端还可以指定测试失败连接的 ping 间隔。
而管理员可以使用代理属性来执行以下操作:激活非默认的连接服务;根据需要分配静态端口;配置线程处理;在使用多个网卡时指定要连接到的主机。管理员还可以指定测试客户端是否可以访问的 ping 间隔,这对于管理资源非常有用。
客户端可以通过防火墙连接到 Message Queue 服务。这可以通过以下方法来完成:让防火墙管理员打开特定的端口,然后连接到该(静态)端口,或者如附录 B,Message Queue 功能 中总结的那样使用 HTTP 或 HTTPS 服务。
每个连接服务还支持特定的验证和授权功能。有关详细信息,请参见安全服务。
驻留在代理主端口 7676 的通用端口映射器会为连接服务动态分配一个端口。Message Queue 客户端运行时环境在建立与代理的连接时,会首先与该端口映射器联系,为它已选定的连接服务请求端口号。
在配置 jms、ssljms、admin 和 ssladmin 连接服务时,也可以通过为这些服务分配静态端口号来代替端口映射器的动态分配。但是,通常仅在特殊情况下(如,通过防火墙建立连接时)才使用静态端口,一般不建议使用静态端口。
每个连接服务都是多线程的,因此可以支持多个连接。这些连接所需的线程由线程池中的代理来维护。它们的分配方式取决于您指定的最小和最大线程值以及您选择的线程处理模型。
可以设置用来指定最小和最大线程数的代理属性。因为线程是连接所必需的,所以它们将添加到支持该连接的服务的线程池中。最小值指定可供分配的线程的数量。当可用线程超过这个最小阈值时,系统将在线程变为空闲状态时关闭这些线程,直到再次达到最小阈值,以此来节省内存资源。如果负载较重,线程数可能会增加,直到达到线程池的最大数量。此后,新的连接将被拒绝,直到某个线程变得可用。
所选的线程模型可指定线程是专用于单个连接还是由多个连接共享:
在专用模型中,与代理的每个连接都需要两个线程:一个用于传入消息,另一个用于传出消息。这限制了可能的连接数量,但提高了性能。
在共享模型中,当发送或接收消息时,连接由共享线程处理。由于每个连接都不需要专用线程,因此,该模型增加了可能的连接数量,但同时也增加了线程管理开销,从而会影响性能。