Sun GlassFish Message Queue 4.4 发行说明

通用消息服务 (Universal Message Service, UMS)

Message Queue 4.3 新增了一项新的通用消息传送服务 (UMS) 和消息传送 API,该 API 允许从任何启用了 http 的设备访问 Message Queue。因此,几乎所有应用程序都可以与任何其他应用程序通信,并从可靠且有保障的 JMS 消息传送中受益。此外,UMS 还为 JMS 消息传送提供了增强的可伸缩性,从而允许消息传送客户端的数量在 Internet 范围内达到相当比例的程度。

体系结构

下图中显示了基本 UMS 体系结构:

图 1–1 UMS 体系结构

该图显示了 UMS 用作非 JMS 客户端与 JMS 提供者之间的网关。

UMS 在 Web 服务器中运行,它与语言和平台无关。UMS 可用作任何非 JMS 客户端应用程序与 JMS 提供者之间的网关。它接收使用 UMS API 发送的消息,将其转换为 JMS 消息,然后通过 JMS 提供者的本机协议将这些消息发送至 JMS 提供者中的目的地。同样,它从 JMS 提供者中的目的地获取消息,将其转换为文本或 SOAP 消息,然后通过 UMS API 将这些消息发送至客户端请求的非 JMS 客户端。

与语言无关且基于协议的简单 UMS API 同时支持基于 Web 和不基于 Web 的应用程序,并且可以与脚本语言和编程语言一起使用。API 以两种样式提供:一种是使用表现状态传输 (Representational State Transfer, REST) 样式协议的简单消息传送 API,另一种是将协议嵌入 SOAP 消息头的 XML 消息传送 API。但是,这两种样式的 API 只需一个 http 请求来发送或接收消息。

UMS API 的简单性和灵活性表现在:AJAX、.NET、Python、C、Java 和许多其他应用程序可以将文本消息和/或 SOAP(带有附件)消息发送至 JMS 目的地,或从 JMS 目的地接收消息。例如,Python 应用程序可以与 .NET 应用程序通信,iPhone 可以与 Java 应用程序通信等等。

对于 Message Queue 4.3,UMS 仅支持将 Message Queue 作为 JMS 提供者。

其他功能

UMS 并非只可用作上述的简单网关。它还支持有状态客户端会话和无状态客户端会话。根据客户端请求,UMS 可在多个服务请求之间保持客户端应用程序的会话状态。UMS 可以使用容器管理验证和/或配置为使用 Message Queue 代理验证客户端。UMS 还支持事务,从而允许客户端应用程序将多个服务请求作为一个整体进行提交或回滚。

由于 UMS 支持大量客户端同时连接到单个 Message Queue 代理,因此减轻了代理连接服务的负荷,从而实现了最大可伸缩性。此外,还可通过水平缩放增大 UMS 容量,以便允许在 Internet 范围内进行大负荷的消息传送。

由于基于协议的 UMS API 的简单性,在客户端无需任何客户端库。这样,API 便可以在将来进行扩展以实现其他 JMS 功能,而无需升级客户端应用程序。

使用 UMS

要使用 UMS,您需要将 UMS 部署到支持 Servlet 2.4 或更高版本规范的 Web 容器中,启动 Message Queue 代理,创建相应的目的地,并编写使用 UMS API 发送或接收消息的消息传送应用程序。

Message Queue 4.3 发行版中包含的 UMS imqums.war 文件安装在以下位置(因平台而异):

可以在适当的情况下重命名 .war 文件。

表 1–5 imqums.war 文件的位置

平台 

imqums.war 的位置

Solaris 

/usr/share/lib/imq

Linux 

/opt/sun/mq/share/lib

AIX 

IMQ_HOME/lib

Windows 

IMQ_HOME\lib

在将 imqums.war 部署到位于 localhost:port 的 Web 容器后,可在以下位置找到 UMS 文档:

http://localhost:port/imqums

或者,也可通过以下方式查找 UMS 文档:

支持的 Web 容器

当前,以下 Web 容器支持 UMS: