内容


使用 WebSphere Application Server V7 中的 WebSphere MQ 消息传递提供程序,第 1 部分

新增的 WebSphere MQ 消息传递提供程序简介

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 使用 WebSphere Application Server V7 中的 WebSphere MQ 消息传递提供程序,第 1 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:使用 WebSphere Application Server V7 中的 WebSphere MQ 消息传递提供程序,第 1 部分

敬请期待该系列的后续内容。

引言

许多组织使用 IBM WebSphere MQ 提供企业消息传递,并使用 IBM WebSphere Application Server 部署其 Java Platform, Enterprise Edition (Java EE) 应用程序。当您在 WebSphere Application Server 中使用最初在 V5 中引入的 WebSphere MQ 消息传递提供程序支持时,可以部署 Java EE 应用程序来直接利用 WebSphere MQ 的企业消息传递功能。本文概述了新的 WebSphere MQ 消息传递提供程序,以及添加到 WebSphere Application Server V7 的相关增强。

本文假设您基本了解 WebSphere Application Server 和 WebSphere MQ 以及 Java Message Service (JMS) API。有关一些优秀的入门文章,请参阅参考资料

什么是 WebSphere MQ 消息传递提供程序?

使用 WebSphere MQ 消息传递提供程序(以下简称“MQ 消息传递提供程序”)的 Java EE 应用程序通过 JMS API 进行消息传递(请参阅参考资料),而 WebSphere MQ 还支持广泛选择其他编程 API 和环境。这意味着 Java EE 应用程序可以使用 MQ 消息传递提供程序与以下应用程序通信:CICS 应用程序、在 z/OS® 上运行的后端应用程序和用各种语言编写的其他现有应用程序,这里仅提供几个示例(图 1)。

图 1. 使用 WebSphere MQ 在不同的系统之间进行通信
图 1. 使用 WebSphere MQ 在不同的系统之间进行通信
图 1. 使用 WebSphere MQ 在不同的系统之间进行通信

通过 MQ 消息传递提供程序,部署使用本地或全局事务的 Java EE 应用程序可以将 WebSphere MQ 作为事务资源。例如,可以异步通知购买管理应用程序:来自 WebSphere MQ 的“填写帐户”消息已经到达。为了响应该消息,该应用程序可能更新库存数据库,如果客户的信用不够,则向货品计价应用程序发送另一条 WebSphere MQ 消息(图 2)。

图 2. 使用全局事务的示例
图 2. 使用全局事务的示例
图 2. 使用全局事务的示例

当然,此示例应用程序最好能够执行这些操作,这样所有资源可以作为单个全局事务进行更新。事实上,使用 MQ 消息传递提供程序可以做到这一点。换句话说,您可以在单个全局事务范围中协调 WebSphere MQ 和其他事务资源,如 IBM DB2® 数据库。

要结合使用 MQ 消息传递程序和 Java EE 应用程序,必须定义一个或多个受管理对象。受管理对象保存在应用服务器的 Java Naming and Directory Interface (JNDI) 命名空间中,用于通过 JMS API 将应用程序与在 WebSphere MQ 中定义的资源相关联。由于 WebSphere MQ 消息传递提供程序受管理对象保存在 JNDI 中,因此可以从有权访问 JNDI 命名空间的任何流程访问它们。

WebSphere Application Server V7 中的 MQ 消息传递提供程序直接支持三种受管理对象。它们分别是:

  • 激活规范
  • 连接工厂
  • 目的地。

此外,可以将消息侦听器端口配置为使用 MQ 消息传递提供程序。在接下来的各个部分中,将详细讨论 MQ 消息传递提供程序受管理对象。

激活规范

WebSphere Application Server V7 中的更新 MQ 消息传递提供程序支持基于 J2EE™ Connector Architecture (JCA) 1.5 兼容资源适配器。JCA 1.5 规范的一部分定义独立于供应商的方法,此方法可以将入站消息提交到在 Java EE 兼容应用服务器(如 WebSphere Application Server)中运行的消息驱动的 Bean (MDB)。用于配置和设置入站消息交付的构造称为激活规范。因此,在 WebSphere Application Server V7 中,现在可以创建 MQ 消息传递提供程序激活规范来管理在 WebSphere Application Server 中运行的 MDB 与 WebSphere MQ 中的目的地之间的关系。

MQ 消息传递提供程序激活规范现在是将消息从 WebSphere MQ 目的地提交到在 WebSphere Application Server 中运行的 MDB 的首选机制。激活规范取代了现有 WebSphere Application Server 消息侦听器端口支持的使用,该侦听器端口支持在 WebSphere Application Server V7 中就已经弃用。不过,仍可以使用消息侦听器端口通过 MQ 消息传递提供程序将消息提交到 MDB——甚至可以同时配置使用 MQ 消息传递提供程序资源的消息侦听器端口和 MQ 消息传递提供程序激活规范。

激活规范与消息侦听器端口的比较

优先使用激活规范(而不是消息侦听器端口)将消息提交到 MDB 的原因有多个方面。与消息侦听器端口相比,普通的激活规范(特别是 MQ 消息传递提供程序激活规范)具有以下优点:

  • 定义的规范:激活规范是标准规范 (JCA 1.5) 的一部分。WebSphere Application Server 中的消息侦听器端口支持使用在 JMS 规范中定义的应用服务器设备接口,但它本身不是任何规范的一部分。
  • 简化配置:要配置消息侦听器端口,您需要以下三个配置对象:连接工厂、目的地和消息侦听器端口本身。使用激活规范只需两个对象:激活规范和目的地。
  • 不局限于服务器范围:可以在 WebSphere Application Server 中的任何管理范围定义激活规范。消息侦听器端口必须在服务器范围配置。这意味着如果一个节点由三个服务器组成,则必须配置三个独立的消息侦听器端口,而不是仅配置一个激活规范。

运行中的激活规范

图 3 显示了如何使用 MQ 消息传递提供程序激活规范将 WebSphere MQ 队列管理器目的地链接到在 WebSphere Application Server 中运行的 MDB。通过 MQ 消息传递提供程序激活规范将消息从客户端提交到 MDB 的流程采取以下方式:

  1. 在独立流程中运行或在应用服务器环境中运行的消息传递客户端使用 JMS(或任何其他消息传递 API,如 MQI)将消息发送到在 WebSphere MQ 队列管理器中定义的 WebSphere MQ 队列或主题。
  2. 将 WebSphere MQ 激活规范配置为在该目的地上侦听消息。检测到新消息时,将从该目的地(可能位于 XA 事务下)将其删除。
  3. 然后,通过 onMessage 方法将该消息传递到已配置为使用 MQ 消息传递提供程序激活规范的 MDB。
  4. MDB 使用该消息中的信息执行相关的业务逻辑。
图 3. 运行中的 WebSphere MQ 消息传递提供程序激活规范
图 3. 运行中的 WebSphere MQ 消息传递提供程序激活规范
图 3. 运行中的 WebSphere MQ 消息传递提供程序激活规范

配置激活规范

配置 MQ 消息传递提供程序激活规范非常类似于配置 MQ 消息传递提供程序连接工厂。可以使用 WebSphere Application Server 管理控制台或 wsadmin 命令行工具对它们进行配置。要使用管理控制台创建 MQ 消息传递提供程序激活规范,请执行以下操作:

  1. 登录到管理控制台。
  2. 导航至 Resources 部分。展开 JMS 选项卡,并单击 Activation specifications
  3. 选择定义 MQ 消息传递提供程序激活规范所需的范围。
  4. 单击 New
  5. 单击 WebSphere MQ messaging provider 框,并单击 OK

图 4 对这些关键控件的位置进行了批注。

图 4. 配置激活规范
图 4. 配置激活规范
图 4. 配置激活规范

创建了基本 MQ 消息传递提供程序激活规范之后,可以使用六种不同的配置面板进一步对其进行配置。要进一步配置 MQ 消息传递提供程序激活规范,请执行以下操作:

  1. 登录到管理控制台。
  2. 导航至 Resources 部分,展开 JMS 选项卡,然后单击 Activation specifications
  3. 选择定义相关 WebSphere MQ 消息传递提供程序激活规范的范围。
  4. 选择相关的 MQ 消息传递提供程序激活规范。

第一个面板可用于修改 MQ 消息传递提供程序激活规范的传输模式和目的地,以及其他常用的配置设置。此页面的右侧提供指向其他配置面板的链接:

  • 使用 Advanced properties 面板可以配置消息压缩、使用者设置和消息格式设置。使用该面板还能够设置 MQ 消息传递提供程序激活规范尝试向 MDB 提交消息的次数(如果 MDB 重复抛出异常)。如果超过提交次数,并且正确地配置了激活规范,则失败的 MDB 会暂停,从而提供调查故障的机会。
  • 可以使用 Broker properties 面板配置用于执行发布/订阅消息传递的设置。并非所有属性都适合于所有版本的队列管理器。在 WebSphere MQ 信息中心指定了有关哪些属性适用于特定版本的队列管理器的更多信息。
  • 可以使用 Custom properties 面板以名称-值对的形式为 MQ 消息传递提供程序激活规范输入任何常规配置设置。通常,此信息并不是必需的。
  • 使用 Client transport properties 面板可以输入关于 SSL 设置和通道出口的其他信息。如果已创建基于客户端通道定义表 (CCDT) 的 MQ 消息传递提供程序激活规范,则此页面不可用。
  • 最后,可以使用 JAAS-J2C authentication data 面板创建身份验证别名,以供 MQ 消息传递提供程序激活规范使用。

z/OS 上的激活规范

在 z/OS 平台上使用 MQ 消息传递提供程序激活规范时,可以提供若干其他功能。这些功能是为充分利用 z/OS 的唯一可伸缩性和工作负载管理功能而设计的,它包括尽可能减少队列管理器端消息争用的拆分进程激活规范实现,以及对激活规范的 z/OS 工作负载管理的支持。

有关此功能以及如何启用和配置该功能的详细信息,请参阅参考资料

将消息侦听器端口迁移到激活规范

早期迭代 MQ 消息传递提供程序的用户使用了消息侦听器端口将消息从 WebSphere MQ 消息传递提供程序目的地提交到在 WebSphere Application Server 中运行的 MDB。迁移到 WebSphere Application Server V7 时,可以改为使用 MQ 消息传递提供程序激活规范。为使迁移到激活规范的任务变得更容易,已经提供了若干工具。

从消息侦听器端口进行迁移时,第一个任务是创建新的 MQ 消息传递提供程序激活规范。可以通过从头创建激活规范来完成此任务,也可以使用工具基于特定消息侦听器端口配置的设置创建 WebSphere MQ 消息传递提供程序激活规范来完成此任务。

您可以从 wsadmin 命令行工具使用 migrateWMQMLP 命令来执行迁移。在管理命令简介部分中可以看到此命令的示例调用。

此外,还可以使用 WebSphere Application Server 管理控制台进行迁移。要对现有消息侦听器端口完成此任务,请执行以下操作:

  1. 登录到管理控制台。
  2. 导航到 Servers => Server Types => WebSphere application servers(图 5),并单击对应的应用服务器。在右侧的 Communications 标头下,展开 Messaging 选项卡,并单击 Message listener service 链接。在 Additional 属性下,单击 Listener Ports 链接。
    图 5. 从消息侦听器端口迁移
    图 5. 从消息侦听器端口迁移
    图 5. 从消息侦听器端口迁移
  3. 选择要转换为 MQ 消息传递提供程序激活规范的消息侦听器端口,并单击 Convert to activation specification 按钮(图 6)。
    图 6. 转换为激活规范
    图 6. 转换为激活规范
    图 6. 转换为激活规范
  4. 如果需要,更改新 MQ 激活规范的管理名称和 JNDI 名称的值。另外,请选择应定义激活规范的相关范围。因为在任何范围都可以创建激活规范,所以您可能无需迁移所有消息侦听器端口配置,尤其是在集群环境中。如果迁移多个消息侦听器端口配置,请注意避免 JNDI 名称冲突。单击 Next
    图 7. 名称激活规范
    图 7. 名称激活规范
    图 7. 名称激活规范
  5. 请查看摘要信息,如果没有错误,请单击 Finish

迁移消息侦听器端口配置后,应配置相应的 MDB,才能使用新的 MQ 消息传递提供程序激活规范。当任何 MDB 都不再引用消息侦听器端口时,可以通过管理控制台或 wsadmin 将其安全删除。

连接工厂的更改

WebSphere Application Server V7 中的 MQ 消息传递提供程序继续对连接工厂提供完全支持,其方式与以前版本中的方式大致相同。不过,除支持某些功能外,还添加了许多增强功能,使创建和配置连接工厂变得更加容易。本部分将概述这些增强功能。

连接工厂创建向导

现在,随着连接工厂创建向导的引入,在 WebSphere Application Server V7 中可以更方便地管理使用管理控制台创建 MQ 消息传递提供程序连接工厂的流程。该向导通过提示您输入最常见的配置属性信息来提供创建基本连接工厂配置的简单方法。然后,可以使用增强的 MQ 消息传递提供程序连接工厂面板定制新的连接工厂,以满足您的特定需求。

启动此向导的方法与启动激活规范大致相同,不同的是应选择需要创建的连接工厂的类型。

连接工厂的新功能

在 WebSphere Application Server V7 中添加了对许多重要 MQ 消息传递提供程序连接工厂配置参数的完全支持。其中最重要的支持也许是 WebSphere Application Server 中与 SSL 支持的更好集成,以及对创建基于 CCDT 的消息传递提供程序连接工厂的完全支持。消息传递提供程序连接工厂现在还公开支持消息标题和有效负载压缩

重新设计的连接工厂管理面板

WebSphere Application Server V7 中明显更改了 MQ 消息传递提供程序连接工厂的管理控制台面板的结构和布局。通过将许多不同面板上各个部分中的相关属性组合在一起,此重构使配置 MQ 消息传递提供程序连接工厂变得更加容易:

  • General properties 面板(图 8)显示了最常用的配置属性,如管理信息、连接配置、安全设置等,并提供指向其他面板的链接(已在 Additional Properties 标题下列出)。
  • Advanced properties 面板用于配置更加专业的选项,如消息标头和有效负载压缩属性、临时目的地的前缀和连接使用者设置。
  • 仅当创建统一连接工厂或主题连接工厂时,Broker properties 面板才可用,该面板可提供配置基于发布/订阅的消息传递所使用的各种功能和队列的机会。
  • 使用 Custom properties 面板以名称-值对的形式创建自定义属性。可以使用这些自定义属性配置无法通过 WebSphere Application Server V7 管理工具提供的连接工厂设置。
  • 如果创建了基于非 CCDT 的 MQ 消息传递提供程序连接工厂,则可以使用 Client transport properties 面板添加和配置通道出口,以及提供对更高级的 SSL 配置属性的访问。
  • 可以使用 Connection and session pool 面板更改池的缺省设置,这些池用于管理从特定连接工厂创建的连接和会话对象。值得一提的是,每个 MQ 消息传递提供程序连接工厂都有单一的连接池,池中的每个连接都有自已的会话池。例如,缺省池大小为 10 表示每个池中最多有 10 个连接,每个连接有 10 个会话,总共有 100 个会话。
  • 可以使用 JAAS - J2C authentication data 面板创建身份验证别名,以供 MQ 消息传递提供程序连接工厂使用。
图 8. 常规属性面板
图 8. 常规属性面板
图 8. 常规属性面板

更好地支持 SSL

安全套接字层 (SSL) 协议在远程服务器流程或端点之间提供安全通信。SSL 安全可用于建立来自端点的入站通信和指向端点的出站通信。要建立安全通信,必须为端点指定证书和 SSL 配置。

在以前的 WebSphere Application Server 版本中,指向 WebSphere MQ 的基于 SSL 的连接依赖于定义的 JVM 自定义属性(主要用于基于客户端容器的环境)或节点的缺省 SSL 配置,来指定要使用的密钥存储库和信任存储库,并为每个连接工厂指定 SSL 密码套件。

WebSphere Application Server V7 在指定 SSL 配置数据方式上包含若干重要更改:

  • 不是使用 SSL 的缺省节点配置,而是专门为 WebSphere MQ 客户端连接(名为 WebSphere MQ Client)添加了新的出站端点安全配置,允许进行自定义,从节点的缺省配置单独修改 WebSphere MQ 连接的缺省 SSL 配置。
  • 在定义 MQ 消息传递提供程序连接工厂或激活规范时,现在有两种方法可以获取 SSL 配置数据:
    • 集中管理:在 WebSphere Application Server V7 中使用连接工厂或激活规范时,当选择此选项时将使用该服务器的新增 WebSphere MQ Client 端点安全配置。如果在客户端容器中使用连接工厂,则使用该客户端的 ssl.client.props 文件中的设置。
    • 特定的配置:您可以使用在计算单元中定义的任何 SSL 配置。
  • 在新的 WebSphere MQ Client 端点中,可以根据目标主机和端口信息定义动态出站端点 SSL 配置。
  • 现在将从 SSL 配置(而不是连接工厂)获取 SSL 密码套件。尽管仍可能覆盖每个连接工厂上使用的 SSL 密码套件,但此操作无需为创建的每个连接工厂手动输入密码套件。

有关 WebSphere MQ 消息传递中 SSL 配置的详细信息,请参阅参考资料

对 CCDT 的完全支持

在 WebSphere Application Server V7 中,现在有两种方法指定 MQ 消息传递提供程序连接工厂或激活规范所需的信息,以便它们可以连接到 WebSphere MQ 队列管理器。第一种方法需要您手动输入所有的信息。第二种方法是向 MQ 消息传递提供程序资源提供指向客户端通道定义表 (CCDT) 的统一资源定位符 (URL)。

CCDT 是一种二进制文件,它包含有关如何创建指向一个或多个队列管理器的客户端连接通道的信息。该文件包含的信息有目标队列管理器的主机名、端口和名称,以及更高级的配置信息,如应该使用的 SSL 属性。通过 WebSphere MQ 队列管理器或使用 SupportPac MO72 提供的独立工具可以生成 CCDT。

使用 CCDT 创建 MQ 消息传递提供程序资源可以提供以下好处:

  • 在单一位置中包含客户端连接通道信息。如果任何信息发生更改(如 WebSphere MQ 队列管理器驻留的计算机的主机名),则只需更新 CCDT,使用 CCDT 的所有 WebSphere MQ 消息传递提供程序资源将拾取该更改。
  • 由于需要的信息较少,因此减少了配置错误发生的机会。使用 CCDT 输入连接信息时,所需的全部输入内容是 CCDT URL 和一个可选的队列管理器名称。如果手动配置 MQ 消息传递提供程序资源,则需要非常多的信息——特别是配置 SSL 时。

有关使用 CCDT 配置 MQ 消息传递提供程序资源的详细信息,请参阅参考资料

使用 Java 编写的通道出口

通道出口是在 WebSphere MQ 通道生命周期中的定义点运行的用户代码。通道出口有许多潜在的用途,其中包括审核、安全、压缩、转换等。WebSphere Application Server V7 中的 MQ 消息传递提供程序提供对基于 Java 的通道出口的完全支持。

在以前的 WebSphere Application Server 版本中,必须使用自定义属性配置通道出口。在 WebSphere Application Server V7 中,可以使用管理控制台、管理命令在连接工厂和激活规范上配置通道出口,或者在 CCDT 条目中指定它们。

要使用通道出口,MQ 消息传递提供程序连接工厂或激活规范必须具有传输类型“客户端”或“绑定然后客户端”。这是因为使用基于客户端通道的连接连接到 WebSphere MQ 队列管理器或队列共享组时,只能使用通道出口程序。如果选择“绑定然后客户端”传输模式,则仅在绑定模式连接失败时,才驱动通道出口。

MQ 消息传递提供程序支持以下三种不同类型的通道出口:

  • 在通道启动的过程中调用安全出口,顾名思义,它通常用于授权目的。不过,安全出口用于运行在通道启动时仅需运行的任何其他代码。
  • 通过通道发送传输之前和通过通道接收传输之后会立即分别调用发送出口接收出口。发送和接收出口的可能用途包括压缩或日志记录。

传输类型的自动选择

企业应用程序使用 MQ 消息传递提供程序连接到队列管理器时,共有两个主要方法来进行此连接。一种选择是使用基于 TCP/IP 的网络连接;此方法称为客户端模式连接。另一种选择是使用交叉内存进程间通信,通常将此方法称为绑定模式连接。尽管连接机制的选择对企业应用程序是透明的,但是名为传输模式的此信息将形成 MQ 消息传递提供程序连接工厂和激活规范配置的一部分。

在 MQ 队列管理器与 WebSphere Application Server 运行于同一节点的配置中,使用绑定模式可提供性能优势。当队列管理器和应用服务器由网络连接的不同计算机承载时,将需要客户端模式连接。当使用新的“绑定然后客户端”模式时,将首先尝试指向队列管理器的绑定模式连接,如果无法实现此连接,则建立客户端模式连接。

创建或修改 WebSphere MQ 消息传递提供程序激活规范或连接工厂时,可以选择“绑定然后客户端”传输模式。

通道压缩

在 WebSphere Application Server V7 中启用新的道通压缩支持时,消息内容通过网络传输时将被压缩。此压缩适用于跨应用服务器中运行的企业应用程序与它们连接的队列管理器之间的链接传输的数据。

如果使用通道压缩,则从应用程序角度而言对消息数据的操作是透明的;在 WebSphere MQ 排列消息数据之前会自动对其解压缩。这使得通道压缩的使用对连接到队列管理器的其他 WebSphere MQ 应用程序同样透明。图 9 显示了压缩和解压缩消息数据的关键点。

图 9. 通道压缩
图 9. 通道压缩
图 9. 通道压缩

使用通道压缩有助于提高在应用服务器和队列管理器之间传输消息的速度。这是因为压缩在消息中发送或接收的数据可以减少传输该消息所需的网络带宽。

在某些情况下,使用通道压缩可以减少为基于 SSL 的连接加密数据花费的处理器时间。这是因为加密数据花费的时间通常取决于加密的数据量,而不是实际的数据内容。因此,如果您的数据压缩完好,您会发现处理器压缩数据、然后加密该数据所花费的时间明显少于加密所有非压缩数据所花费的时间。

WebSphere Application Server V7 支持两种类型的压缩:

  • 行程编码 (RLE) 压缩算法需要非常少的处理器时间,适用于在连续位置重复许多相同字节值的数据。对不具有此重复级别的数据无效。
  • ZLIB 压缩算法需要更多的处理器时间,但适用于更具变化性的数据。

可以通过 WebSphere Application Server 管理控制台或 wsadmin 命令行接口启用通道压缩。要使用管理控制台启用通道压缩(图 10),请执行以下操作:

  1. 登录到管理控制台。
  2. 导航至 Resources 部分,展开 JMS 选项卡,单击 Activation specifications 或适当类型的连接工厂链接。
  3. 单击要启用通道压缩的连接工厂或激活规范,并选择右侧的 Advanced properties 链接。
  4. 在页面的顶部将显示 Message compression 部分。要启用标题压缩,请选中 Compress message headers 框,如图中红色箭头所示。要压缩消息有效负载,请从下拉框中选择所需的压缩算法,如下面的蓝色箭头所示。
图 10. 启用通道压缩
图 10. 启用通道压缩
图 10. 启用通道压缩

管理命令简介

在 V7 之前的版本中,可以在 WebSphere Application Server 中通过管理控制台或使用 wsadmin 工具直接操作 WebSphere Application Server 配置模型来配置 MQ 消息传递提供程序资源。

通过 wsadmin 直接与 WebSphere Application Server 配置模型进行互操作有一定的缺陷,容易出现错误。WebSphere Application Server V7 中引入了一组新的管理命令,可以通过这些命令来创建、修改、删除和显示 MQ 消息传递提供程序资源,还引入了相关功能,如将消息侦听器端口迁移到 MQ 消息传递提供程序激活规范。

新命令包括若干参数,可以对基础配置文档执行适当的操作。和直接与配置模型进行互操作相比,使用这些命令的一些主要好处有:

  • 该命令可提供输入验证,从而有助于确保对配置模型的任何更改都正确无误。这可以防止由于配置模型损坏而导致的启动错误。
  • 这些命令会以文档的形式记录下来,并提供命令行帮助信息来帮助用户。

所有的 MQ 消息传递提供程序管理命令都是 WMQAdminCommands 命令组的一部分,可以使用 Jython 或 JACL 运行它们。通过将以下 Jython 命令输入到 wsadmin 提示符可以获取所有不同命令的摘要信息:

wsadmin>print AdminTask.help('WMQAdminCommands')

WMQAdminCommands 命令组由六个命令集组成,以下各部分将描述这些命令集。创建 MQ 消息传递提供程序资源时,一般情况下,管理名称和 JNDI 名称在创建它的范围中必须是唯一的,否则会产生错误消息。

激活规范命令

为操作 WebSphere MQ 消息传递提供程序激活规范,共提供了以下五个命令:

  • createWMQActivationSpecification:在特定范围创建新的消息传递程序激活规范。例如,以下命令代码可在节点范围创建简单的基于 CCDT 的 WebSphere MQ 消息传递提供程序激活规范:
    wsadmin>node = AdminConfig.list('Node')
    wsadmin>AdminTask.createWMQActivationSpec(node, ["-name MyActivationSpec
    -jndiName   'jms/MyActivationSpec' -destinationJndiName 'jms/MyQueue' 
    -destinationType javax.jms.Queue -ccdtUrl 'file://ccdt.tab' -ccdtQmgrName QM12"])
  • listWMQActivationSpecs:列出在特定范围定义的、当前配置的所有 MQ 消息传递提供程序激活规范:
    wsadmin>AdminTask.listWMQActivationSpecs(node)
    'MyActivationSpec(cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources
    .xml#J2CActivationSpec_1219672912125)
    MyOtherActivationSpec(cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources
    .xml#J2CActivationSpec_1219673212812)'
  • showWMQActivationSpec:分别显示每个激活规范:
    wsadmin>AdminTask.showWMQActivationSpec('MyActivationSpec(
    cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CActivationSpec
    _1219672912125)')
  • modifyWMQActivationSpec:改变现有 MQ 消息传递提供程序激活规范的配置。(无法将现有的基于 CCDT 的激活规范更改为基于非 CCDT 的激活规范。)例如,以下命令代码可修改消息传递提供程序激活规范,以便在 JNDI 中引用不同的目的地:
    wsadmin>AdminTask.modifyWMQActivationSpec('MyActivationSpec(
    cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CActivationSpec
    _1219672912125)', ["-destinationJndiName 'jms/AnotherWMQQueue'"])
  • deleteWMQActivationSpec:删除 MQ 消息传递提供程序激活规范。例如,以下命令代码可删除以前创建的激活规范:
    wsadmin>AdminTask.deleteWMQActivationSpec('MyActivationSpec(
    cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CActivationSpec
    _1219672912125)')

连接工厂命令

为操作 MQ 消息传递提供程序连接工厂,还提供了另一个由五个命令组成的集合。这些命令适用于所有三种类型的连接工厂:统一、队列和主题。

  • createWMQConnectionFactory:在特定的范围创建 MQ 消息传递提供程序连接工厂。类型参数将指定是否创建基于统一、队列或主题的连接工厂,并分别采用值 CF、QCF 或 TCF。例如,以下命令代码可创建使用发送出口、接收出口和其余缺省值配置的统一连接工厂:
    wsadmin>AdminTask.createWMQConnectionFactory(node, ["-name MyCF 
    -jndiName 'jms/MyCF' -type CF -rcvExit com.example.ReceiveExit -rcvExitInitData 
    'debug=true' -sendExit com.example.SendExit -sendExitInitData 'compression=normal'"])
  • modifyWMQConnectionFactory:修改现有 MQ 消息传递提供程序连接工厂。无法使用此命令更改连接工厂的类型。例如,以下命令代码可从上面创建的连接工厂中删除发送和接收通道出口配置:
    wsadmin>AdminTask.modifyWMQConnectionFactory('MyCF(cells/
    L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#MQConnectionFactory
    _1219674863640)', ["-rcvExit '' -rcvExitInitData '' -sendExit '' 
    -sendExitInitData ''"])
  • listWMQConnectionFactoriesshowWMQConnectionFactorydeleteWMQConnectionFactory: 分别列出特定范围的所有 MQ 消息传递提供程序连接工厂、显示单个 MQ 消息传递提供程序连接工厂和删除 MQ 消息传递提供程序连接工厂。 例如,以下命令代码可验证 MyCF 上不再设置通道出口参数:
    wsadmin>AdminTask.showWMQConnectionFactory('MyCF(cells/
    L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#MQConnectionFactory
    _1219674863640)')

目的地命令

为创建和操作 MQ 消息传递提供程序队列和主题,共提供了两个命令集。可以使用 createWMQTopiccreateWMQQueue 命令创建相关范围的消息传递提供程序队列或主题。例如,以下命令代码可在服务器范围创建 MQ 消息传递提供程序队列:

wsadmin>server = AdminConfig.list('Server')
wsadmin>AdminTask.createWMQQueue(server, ["-name MyQueue -jndiName 
'jms/MyQueue' -queueName q1.in -useNativeEncoding false -integerEncoding 
Reversed -decimalEncoding Reversed -floatingPointEncoding IEEEReversed"])

类似地,以下命令代码可创建服务器范围的 WebSphere MQ 消息传递提供程序主题:

wsadmin>AdminTask.createWMQTopic(server, ["-name MyTopic -jndiName 
'jms/MyTopic' -topicName sport/football -useNativeEncoding false -integerEncoding 
Reversed -decimalEncoding Reversed -floatingPointEncoding IEEEReversed"])
  • 要列出特定范围的所有 WebSphere MQ 消息传递提供程序主题或队列,请使用 listWMQTopicslistWMQQueues 命令,并作为参数提供所需范围的名称。要查看特定 MQ 消息传递提程序队列或主题的配置,请使用 showWMQTopicshowWMQQueue 命令,并传入要显示的对象名称。例如,要显示以前创建的主题,请输入:
    wsadmin>AdminTask.showWMQTopic('MyTopic(cells/L3A3316Node04Cell/
    nodes/L3A3316Node05/servers/server1|resources.xml#MQTopic_1219676983984)')
  • 可以使用 modifyWMQQueuemodifyWMQTopic 命令修改特定 MQ 消息传递提供程序主题或队列的属性。例如,可以使用此 modifyWMQQueue 命令将 useNativeEncoding 设置回缺省值 true:
    wsadmin>AdminTask.modifyWMQQueue('MyQueue(cells/L3A3316Node04Cell/
    nodes/L3A3316Node05/servers/server1|resources.xml#MQQueue_1219676256312)', 
    ["-useNativeEncoding true"])

    然后,要验证是否正确地进行了更改,您可以运行 showWMQQueue 命令:
    wsadmin>AdminTask.showWMQQueue('MyQueue(cells/L3A3316Node04Cell/
    nodes/L3A3316Node05/servers/server1|resources.xml#MQQueue_1219676256312)')

manageWMQ 命令

manageWMQ 命令具有三种用途:

  • 它可以通过查询选项提供有关可用于调试目的的 MQ 消息传递提供程序实例的版本信息。
  • 它可以使用 nativePath 选项设置本机路径信息,如果使用指向队列管理器的绑定模式连接则需要该信息。
  • 它可以在 z/OS 平台上使用 enableInbound 选项为入站消息交付启用控制区域调整流程。如果使用 nativePath 或 enableInbound 选项,那么要使更改生效,必须再循环相关的应用服务器流程。

调用 manageWMQ 命令时,需要提供安装的资源适配器(服务器、节点或计算单元范围)的对象名称。通过查看相关的 J2CResourceAdapter 对象可以获取此信息。此示例显示了使用通配符查找这些对象的方式:

wsadmin>AdminConfig.list('J2CResourceAdapter', '*WebSphere MQ*')

下面的示例说明了如何在从上一示例返回的节点范围获取安装的 MQ 消息传递提供程序的版本信息:

wsadmin>AdminTask.manageWMQ("WebSphere MQ Resource Adapter(cells/
L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CResourceAdapter_
1216206449734)", ["-query"])

使用 nativePath 选项指定本机路径信息时,服务器范围的路径信息将覆盖节点和计算单元范围的路径信息。类似地,设置节点范围的本机路径信息会覆盖在计算单元范围指定的配置。使用此选项时提供的路径必须指定包含本机库的目录的完整路径。例如,以下命令代码可在计算单元范围指定本机路径信息:

wsadmin>AdminTask.manageWMQ("WebSphere MQ Resource Adapter(cells/
L3A3316Node04Cell|resources.xml#J2CResourceAdapter_1216206454984)", ["-nativePath 
'c://Program Files//IBM//WebSphere MQ//Java//lib//'"])

下面是使用 enableInbound 选项的示例。使用此选项时,传入的 J2CResourceAdapter 对象必须在服务范围,否则会产生错误:

wsadmin>AdminTask.manageWMQ("WebSphere MQ Resource Adapter(cells/
L3A3316Node04Cell/nodes/L3A3316Node05/servers/server1|resources.xml#J2CResourceAdapter
_1216206454812)", ["-enableInbound"])

migrateWMQMLP 命令

可以使用 migrateWMQMLP 命令将使用 MQ 消息传递提供程序资源的消息侦听器端口迁移到 MQ 消息传递提供程序激活规范。例如,以下命令代码可查找和选择特定的消息侦听器端口,然后将其转换为服务器范围的 MQ 消息传递提供程序激活规范:

wsadmin>lp1 = AdminConfig.list('ListenerPort')
wsadmin>AdminTask.migrateWMQMLP(lp1, ["-asName as1 -asJNDIName jms/as1 
-asScope server"])

总结

本文简要概述了在 WebSphere Application Server V7 的 WebSphere MQ 消息传递提供程序中的新功能,并提供了描述如何使用这些功能的示例。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=394357
ArticleTitle=使用 WebSphere Application Server V7 中的 WebSphere MQ 消息传递提供程序,第 1 部分: 新增的 WebSphere MQ 消息传递提供程序简介
publish-date=06102009