Sun Java System Message Queue 3.7 UR1 技术概述

附录 B Message Queue 功能

Message Queue 服务完全实现了 JMS 1.1 规范,可以提供灵活而可靠的异步消息传送。有关 JMS 符合性相关问题的信息,请参见附录 A,可选 JMS 功能的 Message Queue 实现。但是,Message Queue 所提供的功能超出了 JMS 要求。使用这些功能,可以集成和监视包含大量分布式组件的系统,这些组件在全天候的关键任务操作中交换数以万计的消息。

本书已经在描述 Message Queue 服务的过程中介绍了这些功能。为方便起见,本附录提供了 Message Queue 功能概述:简要描述每项功能,概述使用该功能需要执行的操作,并提供了一些参考,这些参考指向本书中介绍这些功能的章节以及 Message Queue 文档集中详述这些功能的特定文档。

附录 B,Message Queue 功能 按字母顺序列出了 Message Queue 的功能,这些功能大致可分为以下类别。

功能列表

表 B–1 Message Queue 功能

功能 

描述和参考 

管理工具 

Message Queue 服务包括 GUI 和命令行工具,用于管理目的地、事务、长期订阅、受管理对象存储库、用户系统信息库、符合 JDBC 的数据存储库以及服务器证书。 

参考

管理工具

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 1  章 “管理任务和工具”

验证 

对试图与代理建立连接的用户进行验证。

Message Queue 服务对照存储在用户系统信息库中的值对用户的名称和密码进行验证,并根据验证结果确定是否允许用户连接到代理。系统信息库可以是随 Message Queue 提供的平面文件系统信息库,也可以是 LDAP 系统信息库(LDAP v2 或 v3 协议)。 

用法

  1. 创建用户系统信息库或使用默认实例。

  2. 使用 imqusermgr 工具填充系统信息库。

参考

验证和授权

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 7  章 “管理安全性”

授权 

授予用户执行特定操作的权限。

Message Queue 服务允许您创建访问控制属性文件,以指定用户和用户组可以执行的操作。当客户端试图建立连接、创建生成方、创建使用方或浏览队列时,代理会检查此文件。 

用法

编辑自动为代理实例创建的访问控制属性文件。 

参考

验证和授权

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 7  章 “管理安全性”

自动重新连接 

管理员对连接工厂受管理对象设置连接属性,以允许在连接失败时自动重新建立连接。可以重新连接到同一个代理,也可以连接到群集中的另一个代理(如果使用群集)。可以指定尝试重新连接的次数以及尝试的时间间隔。对于群集代理,还可以指定循环访问代理列表的频率以及是否按特定顺序循环访问列表。

参考

连接服务

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 8  章 “管理受管理对象”

代理群集 

通过将许多代理实例组合到一个代理群集内,管理员可以在这些代理之间平衡客户端连接和消息传送。

用法

  1. 为群集中的每个代理指定群集配置属性。可以通过使用配置文件或为每个代理设置属性来完成此操作。

  2. 如果存在主代理,请启动该代理。

  3. 启动群集中的其他代理。

参考

第 4 章,代理群集

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 9  章 “使用代理群集”

代理配置 

管理员可以通过设置代理属性来调整 Message Queue 服务的性能,其中包括路由服务、持久性服务、安全性、监视以及受管理对象的管理。 

参考

第 3 章,Message Queue 服务

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 4  章 “配置代理”

C 客户端支持 

C 客户端可以使用 Message Queue 消息传送服务来发送和接收消息。C API 使传统 C 应用程序和 C++ 应用程序可以参与基于 JMS 的消息传送。 

支持 Message Queue C API 的 C 客户端运行时环境支持大多数标准 JMS 功能,但不支持以下 JMS 功能:使用受管理对象,映射、流或对象消息主体类型,分布式事务,以及队列浏览器。此外,C 客户端运行时环境也不支持 Message Queue 的大部分企业功能。

参考

Java 客户端与 C 客户端

《Sun Java System Message Queue 3.7 UR1 Developer’s Guide for C Clients》

压缩的消息 

Java 客户端可以对消息属性进行设置,使客户端运行时环境压缩要发送的消息。而使用方一端的运行时环境在将消息传送给使用方前先解压缩该消息。此外还提供了其他属性,可以使用这些属性确定压缩消息是否确实改善了性能。

参考

消息主体

《Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients》中的“Managing Message Size”

可配置的持久性 

管理员可以对代理进行配置,以使用随 Message Queue 提供的基于文件的持久性存储库,或者使用符合 JDBC 的数据库,如 Oracle 8i。

用法

设置与文件系统持久性存储器或与符合 JDBC 的存储器相关的代理属性。 

参考

持久性服务

《Sun Java System Message Queue 3.7 UR1 管理指南》中的“配置持久性数据存储库”

可配置的物理目的地 

创建目的地时,管理员可以通过设置物理目的地属性来定义某些消息传送行为。可以针对任何目的地配置以下行为:未使用消息的最大数量或允许这些消息使用的最大内存、当超出内存限制时代理应该拒绝哪些消息、生成方和使用方的最大数量、消息的最大大小、单批传送的最大消息数、目的地是否只能将消息传送给本地使用方以及是否可以将目的地上的停用消息移到停用消息队列中。 

参考

目的地和路由服务

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 6  章 “管理物理目的地”

连接 ping 

管理员可以设置连接工厂属性,以指定从客户端运行时环境到代理之间 ping 操作的频率。此功能会使客户端可以尽早检测到失败的连接。

参考

连接服务

《Sun Java System Message Queue 3.7 UR1 管理指南》中的“连接服务”

停用消息队列 

Message Queue 消息服务通过创建停用消息队列来保存已过期或代理无法处理的消息。可以通过检查队列内容来监视和调整系统性能,或者解决系统性能问题。

参考

目的地和路由服务

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 6  章 “管理物理目的地”

HTTP 连接 

Java 客户端可以建立与代理之间的 HTTP 连接。

HTTP 传输允许通过防火墙传送消息。Message Queue 使用在 Web 服务器环境中运行的 HTTP 隧道 Servlet 来实现 HTTP 支持。客户端运行时环境将客户端生成的消息包装为 HTTP 请求,并借助于 HTTP 通过防火墙将其传送到隧道 Servlet。隧道 Servlet 从 HTTP 请求提取 JMS 消息,然后将该消息通过 TCP/IP 传送到代理。 

用法

  1. 在 Web 服务器上部署 HTTP 隧道 Servlet。

  2. 配置代理的 httpjms 连接服务并启动代理。

  3. 配置 HTTP 连接。

  4. 获取与代理的 HTTP 连接。(仅限于 Java 客户端。)

参考

连接到代理

《Sun Java System Message Queue 3.7 UR1 管理指南》中的附录 C “HTTP/HTTPS 支持”

交互监视 

管理员可以使用 imqcmd metrics 命令远程监视代理。监视的数据包括 JVM 度量、代理消息流、连接、连接资源、消息、目的地消息流、目的地使用方和目的地资源的使用情况。

参考

监视服务

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 10  章 “监视代理”

J2EE 资源适配器 

Message Queue 提供可以插入到符合 J2EE 的应用服务器的资源适配器。应用服务器通过将 Message Queue 用作 JMS 提供者来满足 J2EE 要求,即,在应用服务器中运行的分布式组件能够使用可靠的异步消息进行交互。

用法

通过设置适配器属性来配置适配器。 

参考

J2EE 应用服务器支持

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 17  章 “JMS 资源适配器属性参考”

JNDI 服务提供者支持 

客户端可以使用 JNDI API 查找受管理对象。 

管理员可以使用 imqobjmgr 实用程序,在可通过 JNDI 访问的对象存储库中添加、列出、更新和删除受管理对象。

参考

管理工具

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 8  章 “管理受管理对象”

LDAP 服务器支持 

管理员可以将 LDAP 服务器用于受管理对象存储库,以及用于存储验证和授权所需的用户信息。默认情况下,Message Queue 为这些数据提供基于文件的存储器。 

用于受管理对象

  1. 使用供应商提供的工具来填充和管理用户系统信息库。

  2. 设置与 LDAP 相关的代理属性。

  3. 为管理用户设置访问控制。

参考

安全服务

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 7  章 “管理安全性”

用于用户系统信息库

  1. 使用供应商提供的工具设置 LDAP 服务器。

  2. 设置与 LDAP 相关的代理属性,以定义初始上下文和存储位置。

  3. 设置与保护 LDAP 服务器操作有关的 LDAP 相关代理属性。

参考

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 7  章 “管理安全性”

内存资源管理 

管理员可以配置以下行为:

  1. 设置目的地属性,以指定生成方的最大数量、消息的最大总大小以及任一消息的最大大小。

  2. 设置目的地属性以控制消息流。

  3. 设置目的地属性以管理每个目的地的消息流。

  4. 设置代理属性以便为该代理的所有目的地指定消息限制。

  5. 设置代理属性以指定可用系统内存的阈值,当达到该阈值时,代理可以采取逐渐严格的操作来防止内存过载。采取的操作取决于内存资源的状态。

参考

目的地和路由服务

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 4  章 “配置代理”

消息压缩 

开发者可以设置消息头属性,使客户端运行时环境在发送消息之前先进行压缩。而接收方一端的客户端运行时环境在将消息传送给使用方前先解压缩该消息。

参考

消息属性

《Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients》中的“Message Compression”

客户端的消息流控制 

管理员或开发者可以通过配置连接来指定各种流限制和度量方案,以便最大限度地减少有效负荷消息与控制消息之间的冲突,进而最大限度地提高消息吞吐量。

用法

为连接工厂受管理对象(管理员)设置流控制属性,或者为连接工厂(开发者)设置流控制属性。 

参考

连接工厂和连接

《Sun Java System Message Queue 3.7 UR1 管理指南》中的“连接服务”

《Sun Java System Message Queue 3.7 UR1 管理指南》中的“连接工厂属性”

基于消息的监视 API 

Java 客户端可以使用监视 API 创建自定义的监视应用程序。监视应用程序是从特殊度量主题目的地中检索度量消息的使用方。

用法

  1. 编写度量监视客户端。

  2. 设置代理属性以配置代理的度量消息生成方。

  3. 在度量主题目的地上设置访问控制。

  4. 启动监视客户端。

参考

监视服务

《Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients》中的第 4  章 “Using the Metrics Monitoring API”

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 10  章 “监视代理”

多个使用方的队列传送 

客户端可以为一个给定队列注册多个使用方。

管理员可以为该队列指定活动使用方的最大数量以及备份使用方的最大数量。代理将消息分发给注册的使用方,在使用方之间平衡负载以便系统可以进行扩展。 

用法

设置物理目的地属性 maxNumActiveConsumersmaxNumBackupConsumers

参考

点对点消息传送

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 15  章 “物理目的地属性参考”

可靠数据的持久性 

要获得绝对的可靠性,可以将 imq.persist.file.sync.enabled 属性设置为 true,以此要求操作系统将数据同步写入持久性存储。这会避免因系统崩溃可能引起的数据丢失,但负面影响是会导致性能下降。请注意,尽管数据未丢失,但它们对于(群集中的)任何其他代理都不可用,因为群集代理当前未共享这些数据。当系统恢复时,代理可以可靠地继续执行操作。

参考

持久性服务

《Sun Java System Message Queue 3.7 UR1 管理指南》中的“持久性属性”

安全连接 

客户端可以在 TCP/IP 和 HTTP 传输中使用安全套接字层 (Secure Socket Layer, SSL) 标准来保护消息传输。这些基于 SSL 的连接服务允许对在客户端与代理之间发送的消息进行加密。 

SSL 支持基于自签名服务器证书。Message Queue 提供了一个实用程序,它可以生成私钥/公钥对,并将公钥嵌入到自签名证书中。此证书将被传递到任何请求代理连接的客户端,该客户端将使用此证书建立加密连接。

用法

  1. 生成自签名证书或签名证书。

  2. 启用安全的服务。

  3. 启动代理。

  4. 配置客户端安全连接属性并运行客户端。

参考

连接到代理

安全服务

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 7  章 “管理安全性”

《Sun Java System Message Queue 3.7 UR1 Developer’s Guide for C Clients》中的“Working With Secure Connections”

SOAP 支持 

客户端可以接收 SOAP (XML) 消息,将它们包装为 JMS 消息,并使用 Message Queue 像交换 JMS 消息一样来交换这些消息。

客户端可以使用特殊的 Servlet 来接收 SOAP 消息;它们可以使用一个实用程序类将 SOAP 消息包装为 JMS 消息,而使用另一个实用程序类从 JMS 消息中提取 SOAP 消息。客户端可以使用标准的 SAAJ 库来组合和分解 SOAP 消息。 

参考

使用 SOAP 消息

《Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients》中的第 5  章 “Working with SOAP Messages”

线程管理 

管理员可以指定分配给任何特定连接服务的最大线程数和最小线程数。管理员还可以确定使用共享线程模型能否提高连接服务的吞吐量,该模型允许非空闲连接使用空闲连接专用的线程。

用法

设置与连接服务线程相关的属性。 

参考

线程池管理

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 4  章 “配置代理”

可调整的性能 

管理员可以设置代理属性,以便对内存使用情况、线程资源、消息流、连接服务、可靠性参数以及其他影响消息吞吐量和系统性能的因素进行调整。

参考

监视服务

《Sun Java System Message Queue 3.7 UR1 管理指南》中的“监视服务”

《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 11  章 “分析和调整消息服务”