Application Server 支持 JMS 连接池和故障转移。Sun Java System Application Server 将自动实现 JMS 连接池。“地址列表行为”属性为 random(默认值)时,Application Server 将从 JMS 主机列表中随机选择其主代理。发生故障转移时,MQ 会将负载透明地转移到另一个代理,并维持 JMS 语义。
要指定连接丢失时 Application Server 是否尝试重新连接到主代理,请选择“重新连接”复选框。如果已启用,则当主代理出现故障时,Application Server 将尝试重新连接到 JMS 主机列表中的另一个代理。
启用“重新连接”时,也同时指定以下属性:
地址列表行为:是按 JMS 主机列表中的地址顺序 (priority) 还是按随机顺序 (random) 尝试连接。如果设置为 Priority,Java 消息服务将尝试连接到 JMS 主机列表中指定的第一个 MQ 代理,仅当第一个代理不可用时,才使用另一个代理。如果设置为 Random,Java 消息服务将从 JMS 主机列表中随机选择 MQ 代理。如果许多客户机同时尝试使用同一个连接工厂来进行连接,请使用此设置以防止它们全部尝试连接至同一个地址。
地址列表重复:Java 消息服务建立(或重新建立)连接时,在 JMS 主机列表中重复的次数。值 -1 表示尝试次数没有限制。
重新连接尝试:客户机运行时尝试连接(或重新连接)JMS 主机列表中每个地址的次数。到达这个值后,客户机运行时将尝试连接列表中的下一个地址。值 -1 表示重新连接尝试次数没有限制(客户机运行时将尝试连接至第一个地址,直到连接成功)。
重新连接时间间隔:两次重新连接尝试之间的秒数。此设置适用于对 JMS 主机列表中每个地址的尝试,及对该列表中连续地址的尝试。如果该时间间隔太短,则代理将没有时间恢复。如果该时间间隔太长,则重新连接可能会指明这是不可接受的延迟。
您可以使用 JMS 连接工厂设置覆盖这些设置。有关详细信息,请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理指南》中的“有关 JMS 连接工厂的管理控制台任务”。
Application Server 将消息随机传送到具有相同 ClientID 的 MDB。持久订阅者需要 ClientID。
对于没有配置 ClientID 的非持久订阅者,特定 MDB 中订阅同一主题的所有实例均认为是等效的。当 MDB 部署到 Application Server 的多个实例时,只有一个 MDB 接收消息。如果多个不同的 MDB 订阅了同一主题,则每个 MDB 的一个实例将接收消息的副本。
要使用同一队列支持多个使用者,请将物理目标的 maxNumActiveConsumers 属性设置为较大值。如果已设置此属性,MQ 将最多允许这些数量的 MDB 使用同一队列中的消息。消息将被随机传送至 MDB。如果将 maxNumActiveConsumers 设置为 -1,将不限制使用者的数目。