Sun Java System Message Queue 3.7 UR1 技术概述

目的地和路由服务

客户端连接到代理之后,即可开始路由和传送消息。在该阶段,代理负责创建和管理不同类型的物理目的地、确保消息顺利流动以及高效使用资源。代理使用与路由和目的地有关的代理属性,按照符合应用程序需要的方式来管理这些任务。

请记住,代理的物理目的地是一个内存位置,消息在传送到消息使用方之前存储在该位置。物理目的地分为四种:

管理目的地

可以使用 imqcmd 实用程序来管理目的地。要管理目的地,需要完成下面的一个或多个任务:

管理任务因所管理的目的地的种类(管理员创建、自动创建、临时或停用消息队列)而异。例如,临时目的地不需要显式销毁;自动创建的属性可通过使用某些代理配置属性来配置,这些属性应用于该代理中自动创建的所有目的地。

配置物理目的地

为了获得最佳性能,您可以在创建或更新物理目的地时设置属性。下面是可以设置的属性:

对于队列目的地,还可以配置备份使用方的最大数量,并为群集代理指定是否优先传送到本地队列。

还可以配置停用消息队列的限制和行为。但是,请注意,停用消息队列的默认属性不同于标准队列的属性。

管理内存

因为目的地可能使用大量的资源(取决于它们处理的消息的数量和大小以及注册的使用方数量和长期性),所以需要对它们进行严格的管理,以保证消息传送服务具有良好的性能和可靠性。

可以设置一些属性,以防止向代理传入过多的消息并防止代理内存不足。代理使用以下三级内存保护,使消息服务在资源不足时仍可正常运行:目的地限制、系统范围限制以及系统内存阈值。理想情况下,如果目的地限制和系统范围限制设置得当,则应当不会达到紧急系统内存阈值。

目的地消息限制

可以设置用来管理每个目的地的内存和消息流的目的地属性。例如,可指定目的地允许的生成方的最大数量、目的地允许的消息的最大数量或最大大小以及任何一条消息的最大大小。

还可以指定在达到上述任何限制时代理的响应方式:降低生成方的速度、丢弃最旧的消息、丢弃优先级最低的消息或者拒绝最新的消息。

系统范围消息限制

还可以使用属性来设置应用于代理中所有目的地的限制:可以指定消息总数和所有消息占用的内存。如果达到了任何系统范围消息限制,代理将拒绝新消息。

系统内存阈值

最后,可以使用属性来设置阈值。当达到阈值时,代理会采取越来越严格的措施来防止内存过载。采取的操作取决于内存资源的状态:green(可用内存充足)、yellow(代理内存不足)、orange(代理内存严重不足)、red(代理无可用内存)。随着代理的内存状态从 green 变为 red,代理所采取的措施也会越来越严格: