Sun Java System Message Queue 3.7 UR1 技术概述

消息传送

在群集配置中,代理共享有关目的地和消息使用方的信息。每个代理都知道以下信息:

这使每个代理都可以从自己直接相连的消息生成方将消息路由到远程消息使用方。生成方的本机代理与使用方的本机代理具有不同的职责:

群集代理可以协同工作以最大限度地降低群集内的消息流量。例如,如果某个远程代理对于同一个主题目的地有两个完全相同的订阅,则消息将只通过线路发送一次。可以设置一个目的地属性以指定向本地使用方的传送优先于向远程使用方的传送,从而进一步减小流量。

如果要求客户端与代理之间的消息传送安全且经过加密,则可以对群集进行配置,以便在代理之间提供安全的消息传送。

目的地属性

为一个群集代理中的物理目的地设置的属性适用于群集内该目的地的所有实例;但是,由这些属性指定的一些限制会应用于整个群集,而其他属性则应用于单独的目的地实例。表 4–1 列出了可以为物理目的地设置的属性并指定了它们的适用范围。

表 4–1 群集代理中物理目的地的属性

属性名 

范围 

maxNumMsgs

每个代理。因此,通过将生成方分布在一个群集中,可以提高对未使用消息的总数的限制。 

maxTotalMsgBytes

每个代理。因此,通过将生成方分布在一个群集中,可以提高为未使用消息保留的总内存的限制。 

lmitBehavior

全局 

maxBytesPerMsg

每个代理 

maxNumProducers

每个代理 

maxNumActiveConsumers

全局 

maxNumBackupConsumers

全局 

consumerFlowLimit

全局 

localDeliveryPreferred

全局 

isLocalOnly

全局 

useDMQ

每个代理 

群集和目的地

无论目的地是管理员创建的、自动创建的还是临时的,都会影响该目的地在群集内的传播方式以及在连接失败或代理发生故障时该目的地的处理方式。以下各节将详细考察几个使用案例,以决定目的地的创建时间和目的地的复制方式。这些案例包括:

使用回复模型生成消息并放入队列

下图显示客户端生成消息并放入队列以及使用回复模型时,目的地的创建和复制方式。

图 4–2 在群集中复制目的地:使用回复的队列

该图显示目的地在群集内的传播。后面是详细的文字说明。

  1. 管理员创建物理目的地 QW。创建时,队列在整个群集内复制。

  2. 生成方 ProdQW 向队列 QW 发送一条消息,并使用回复模型将回复定向到临时队列 TempQ1W。(应用程序创建临时目的地并添加使用方时,系统会创建和复制临时队列。)

  3. 本机代理 BrokerW 保持发送到 QW 的消息并将消息路由到第一个符合该消息选择标准的活动使用方。根据哪个使用方准备好接收该消息,将消息传送到使用方 C1QW(位于 BrokerX 上)或使用方 C2QW(位于 BrokerZ 上)。接收该消息的使用方会将回复发送到目的地 TempQ1W

生成消息并放入自动创建的目的地

下图显示生成方向不存在且必须自动创建的目的地发送消息时,目的地的创建和复制方式。

图 4–3 在群集中复制目的地:自动创建的目的地

该图显示目的地在群集内的传播。后面是详细的文字说明。

  1. 生成方 ProdAutoQY 向代理中不存在的目的地 AutoQY 发送一条消息。

  2. 代理保持该消息并创建目的地 AutoQY

    自动创建的目的地不会自动在群集内复制。只有当某个使用方选择从队列 AutoQY 接收消息时,该使用方的本机代理才创建目的地 AutoQY 并将这些消息传递到该使用方。当一个使用方创建自动创建的目的地时,该目的地将在群集内复制。在本示例中,使用方 CAutoQY 创建目的地时就会复制该目的地。

发布到主题目的地

下图显示客户端将消息发布到管理员创建的主题目的地时,目的地在群集中的创建和复制方式。

图 4–4 在群集中复制目的地:发布到主题

该图显示目的地在群集内的传播。后面是详细的文字说明。

  1. 管理员创建物理主题目的地 TY。管理员创建的目的地 TY 会在使用之前在代理群集内复制。

  2. 发布者 PubTY 向主题 TY 发送一条消息。

  3. 本机代理 BrokerY 保持发布到 TY 的任何消息,并将这些消息路由到所有符合该消息选择标准的主题订户。在本示例中,C1TYC2TY 均订阅主题 TY

在连接失败或代理发生故障时处理目的地

表 4–2 解释如何在群集内复制和删除不同种类的目的地。

表 4–2 在群集内处理目的地

目的地 

传播和删除 

管理员创建的 

该目的地创建出来后,会在群集内传播,而且每个代理都永久存储有关该目的地的信息。 

当该目的地由管理员明确删除时,它会被销毁。 

如果有一个主代理,则会在主代理中存储有关创建和删除的记录,以使群集内的其他代理可以同步状态信息。 

临时 

该目的地创建出来后,会在群集内传播。 

如果允许与临时目的地关联的使用方重新连接,则该目的地将永久存储在使用方的本机代理中。否则,该目的地将永远也不会存储。 

如果该使用方的连接断开,则该目的地将从所有代理中删除。 

如果该使用方的本机代理崩溃,并且允许该使用方重新连接,则与该使用方关联的临时目的地将受到监视。如果使用方客户端在特定的时间段内未重新连接,则会假定该客户端出现故障,该目的地将被删除。 

自动创建 

创建生成方时,如果目的地不存在,则会在生成方的本机代理中创建一个目的地。 

为不存在的目的地创建使用方时,有关该使用方和目的地的信息会在群集内传播。 

自动创建的目的地可以由管理员明确删除,也可以在以下情况下由每个代理自动删除: 

  • 在给定的时间段内没有使用方或消息。

  • 当代理重新启动时,并且没有该目的地的消息。