跳到主要内容

JMS API开发者指南

PubSub+ JMS API 使用标准的 JMS 接口,通过 PubSub+ 事件代理为基于 Java 的应用程序提供 JMS 服务。有关 PubSub+ JMS API 中的版本支持信息,请参阅支持的环境。

要在 Java 平台,企业版(Java EE)应用程序服务器环境中使用 Solace JMS 实现,您可以部署一个 Solace 提供的、符合 Java 连接器架构(JCA)1.5 的资源适配器,用于特定的应用程序服务器平台,以向企业应用程序提供与事件代理的连接。Solace 目前为 Red Hat JBoss EAP 6.2 和 WebSphere Application Server V8(安装了 Java 1.8)提供资源适配器。

使用 JMS

Solace Java 消息服务(JMS)允许 Java 应用程序使用标准的 JMS API 访问事件代理。JMS 为 Java 程序提供了一种创建、发送、接收和读取企业消息系统消息的通用方式。有关 JMS 的详细信息,请参阅 JMS 规范。

Solace JMS 由以下组件组成:

  • Solace PubSub+ 事件代理网络

Solace PubSub+ 网络是 Solace JMS 的核心,作为 JMS 提供者。它提供消息路由、选择/过滤和访问控制。

  • Java 命名和目录接口(JNDI)管理

事件代理为客户端提供事件代理绑定和 JNDI 查找服务。Solace PubSub+ 还支持对远程主机上基于 LDAP 的 JNDI 存储中维护的管理对象进行 JNDI 查找。

  • JMS API

Solace JMS API 实现使用标准的 JMS 接口,通过事件代理网络为基于 Java 的应用程序提供 JMS 服务。

  • Solace CLI 和 SolAdmin

Solace CLI 和 SolAdmin 允许您对 JMS 提供者(在这种情况下,是网络中的一个事件代理)进行管理更改。通过 Solace CLI 和 SolAdmin,您可以创建代表网络客户端和连接的 JMS 对象,并将这些信息自动存储在事件代理上的 JNDI 查找服务中,该服务由 JMS 客户端应用程序使用。

JMS 概念

如果您以前没有一起使用过 JMS 和 Solace PubSub+,您可能想查看概述:应用程序如何与 PubSub+ 消息传递组件交互页面的 JMS 部分。它将带您参观 PubSub+ 事件代理的消息组件,并在高级别上解释它们如何通过 JMS 从生产者向代理移动数据,以及从代理向消费者移动数据。

JMS 实体

您可以通过 Solace CLI 或 SolAdmin 创建以下 JMS 实体:

  • 连接工厂

连接工厂是一个网络对象,它为客户端应用程序提供与 JMS 提供者创建连接所需的信息。默认的 SolConnectionFactorySolXAConnectionFactory 对象提供了预定义的默认连接工厂属性。这些默认值可以修改。

  • JMS 主题

JMS 主题是一个 JMS 管理的对象,客户端应用程序可以在 JMS 发布-订阅(pub/sub)消息域中订阅和发布到该主题。支持持久和临时 JMS 主题。

您可以通过 Solace CLI 和 SolAdmin 创建和管理持久 JMS 主题,但只能查看活动的临时 JMS 主题。临时 JMS 主题是由 JMS 应用程序在会话级别创建的唯一 JMS 主题。

  • 订阅名称

必须在事件代理上配置一个具有唯一名称的持久订阅,客户端才能使用特定的 JMS 主题消费消息。持久订阅作为主题的目标,并吸引发布到该主题的消息。多个订阅者可以使用各自的持久订阅接收 JMS 主题的消息。有关在事件代理上创建订阅的信息,请参阅配置主题端点。

当客户端与事件代理连接时,JMS 主题绑定到持久订阅(尽管一个持久订阅可以服务于多个 JMS 主题,但一次只能服务于一个 JMS 主题)。绑定关系由客户端应用程序创建的消息消费者设置。有关详细信息,请参阅 JMS API 参考文档。

  • JMS 队列

JMS 队列是一个网络对象,客户端应用程序使用它来指定其发送消息的目的地和接收消息的来源。队列是在 JMS 点对点(PTP)消息域中使用的 destination 对象。队列是消息生产者可以发送消息的目的地。

支持持久和临时 JMS 队列。您可以通过 Solace CLI 和 SolAdmin 创建和管理持久 JMS 队列,但只能查看活动的临时队列。临时 JMS 队列是由 JMS 应用程序在会话级别创建的唯一 JMS 队列。

配置信息

  • JMS/JNDI 管理员

有关如何在事件代理上使用 JNDI 对象的信息,请参阅 Solace JNDI 对象。