Liberty 嵌入式 JMS 消息传递提供者
Liberty 消息传递是 Liberty 中的一个嵌入式消息传递功能部件。它是在 Liberty 中运行的一个可组合且灵活的动态 JMS 消息传递引擎。Liberty 消息传递同时符合 JMS 1.1 和 JMS 2.0 规范,并且同时支持点到点消息传递模型和发布/预订消息传递模型。
Liberty 消息传递仅在 Liberty 运行时运行,并且您可以使用 Liberty 功能部件管理器,根据需要来启用或禁用消息传递功能部件。因为消息传递运行时高度可组合,所以您可以对运行时启用基本消息传递功能部件,并且可以根据需求来动态启用更多消息传递功能部件(例如,安全性、事务和远程通信)。
Liberty 消息传递可以分类为两个部件:
- JMS 服务器运行时:为连接、事务、持久性和安全性等提供所有运行时功能。
- JMS 客户机连接:提供资源适配器支持以允许 JMS 客户机执行同步和异步消息传递活动。
消息传递引擎作为单实例在 Liberty 中运行,这意味着在任何特定时间,Liberty 内核中只能有一个消息传递引擎处于运行状态。
Liberty 消息传递体系结构
Liberty 消息传递具有高度可组合和动态的性质。Liberty 消息传递包含若干其他内部消息传递子组件(这些子组件是作为 OSGi 捆绑软件实现的),可以根据用户需求来启用或禁用这些子组件。使用 OSGi 服务来管理组件生命周期,以及管理依赖性和配置的注入过程。
图 1. Liberty 消息传递体系结构

消息传递运行时和其他消息传递子组件作为 OSGi 捆绑软件在 OSGi 框架中运行。这可让 Liberty 内核根据使用情况来装入或卸载消息传递捆绑软件。例如,如果用户未使用消息传递安全性,那么不会初始化与消息传递安全性相关的捆绑软件。
应用程序部署
Liberty 消息传递支持三种类型的 JMS 应用程序连接。应用程序可以采用下列任何方式运行:
- 在托管消息传递引擎的 Liberty 中运行。
- 在另一个未托管任何消息传递引擎的 Liberty 中运行。
- 在 WebSphere® Application Server 传统版中。
图 2. 应用程序部署模型

Liberty 消息传递支持应用程序进行进程内及网络 TCP/IP 连接。如果 JMS 应用程序部署在正运行消息传递引擎的同一个 JVM 中,那么该应用程序可与进程内消息传递引擎进行通信,而不需要通过 TCP/IP 层进行通信。这会为应用程序提供显著的性能优势来收发消息。
如果 JMS 应用程序正在一个未托管消息传递引擎的 Liberty 上运行,那么这些应用程序必须通过 TCP/IP 进行连接,以便与消息传递引擎进行通信。
消息处理
目标(队列或主题)总是定位到其中定义了目标的消息传递引擎。如果应用程序需要将消息发送到目标或从目标接收消息,那么它必须总是连接至可以定位目标的消息传递引擎。
图 3. Liberty 消息传递中的消息处理
