使用 WebSphere ESB 和 WebSphere Service Registry and Repository 配置动态 MQ 端点

本文将介绍如何在 WebSphere Service Registry and Repository 中配置 WebSphere MQ 端点,该端点是在运行时从 WebSphere ESB 中介模块中动态选择出来的。

Dave A. Krier, WebSphere 解决方案架构师, IBM

Dave Krier 是一个 WebSphere 解决方案架构师,专攻 WebSphere BPM 和 ESB 技术。他有超过 10 年的各种 IBM 产品和非 IBM 产品的使用经验。目前他主要负责 IBM 客户在业务流程开发、实现和集成方面的日常咨询。



2012 年 5 月 31 日

简介

免费下载:IBM® WebSphere® MQ V7.0.1 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

本文将介绍如何在 WebSphere Service Registry and Repository 中配置 IBM® WebSphere® MQ 端点,该端点是在运行时从 WebSphere ESB 中介模块中动态选择出来的。该中介模块使用原生 Endpoint Lookup 原语在 WebSphere Service Registry and Repository 中查询一些端点,这些端点使用了流经 ESB 的服务消息对象 (SMO) 中的元素。这个方法可以实现良好的业务灵活性,能够通过 ESB 以外的中央库管理 MQ 端点。虽然有关端点治理的内容不在本文讨论范围之内,但是对存储库中注册的端点应用治理策略和分类是一项最佳实践。

本文的环境

  • WebSphere MQ V7.0.0.1
  • WebSphere Service Registry and Repository V7.0.0.3
  • WebSphere Integration Developer V7.0.1
  • WebSphere ESB

WebSphere MQ 配置

创建三个新的本地队列。

  1. 打开 WebSphere MQ Explorer。
  2. 假设已经配置了一个队列管理器,创建三个新的本地队列,并分别将它们命名为 queue1、queue2 和 queue3,全部采用默认配置:
    图 1
    图 1
    图 2
    图 2
    图 3
    图 3
  3. 对后两个队列重复这些步骤。需要注意队列管理器名称以及用于连接到队列管理器的端口号:
    图 4
    图 4
    图 5
    图 5

查找队列管理器的端口号

  1. 在队列管理器名称上单击右键,并选择 Properties。我的队列管理器的名称为 MB7QMGR:
    图 6
    图 6
  2. 单击 TCPIP,识别队列管理器的端口号。记录该号码并单击 Cancel
    图 6
    图 7

WebSphere MQ 服务定义

WebSphere MQ V7 在 WebSphere MQ Explorer 中提供了一个服务定义向导,该向导可以为 WebSphere MQ 应用程序创建 WSDL。该向导帮助您使用 MQ 服务绑定创建 MQ WSDL,并根据 MQ 服务定义和 MQ IRI 规范生成 WSDL 文档。以下步骤展示了如何使用服务定义向导为 WebSphere MQ 应用程序创建一个 MQ WSDL 文档。在生成 WSDL 文档之前,您需要创建一个 Service Definition Repository,在其中存储 MQ 服务定义。

  1. 右键单击 Service Definition Repositories,然后单击 Add Repository
    图 8
    图 8
  2. 输入新的 Service Definition Repository 的名称并单击 Finish
    图 9
    图 9
  3. 右键单击 MyWMQServices 库并选择 Service Definition
    图 10
    图 10
  4. 输入 MQService_Port 作为 Service Definition 的名称,对于消息交换模式(Message Exchange Pattern),请选择 One-Way,然后选择 Next
    图 11
    图 11

    消息交换模式描述了 MQ 应用程序所需的消息模式(将为该应用程序生成 WSDL 文档)。MQ 服务定义同时支持 Request-Response 和 One-Way 消息交换模式,具体选择取决于应用程序。

  5. 将绑定类型设置为 MQ 并选择 Next
    图 12
    图 12

    MQ 服务绑定同时支持原生 MQ 和 SOAP/MQ 绑定类型,具体选择取决于应用程序期望使用 WebSphere MQ 消息还是 SOAP 消息。

  6. 提供 putMsg 的操作名称:
    图 13
    图 13
  7. 提供输入目的地 msg/queue/queue1 作为名称以及(您的队列管理器名称),然后单击 Finish:
    图 14
    图 14
  8. 单击 Finish 以完成服务定义的创建。

该流程创建了一个 WSDL 服务定义,您应该将它加载到 WebSphere Service Registry and Repository 中,以创建 WSDL 端口和相关的接口定义。

WebSphere Service Registry and Repository 端点配置

WebSphere Service Registry and Repository 通过 WebSphere MQ 集成特性支持 WebSphere MQ Service Definition WSDL 文档,该特性用于将 WebSphere MQ WSDL 文档加载到 WebSphere Service Registry and Repository。从 V6.3 开始,WebSphere Service Registry and Repository 在默认的 Governance Enablement Profile 文件中提供该特性。您可以在任何配置文件中启用该特性,有关详细信息,请参阅 WebSphere Service Registry and Repository 信息中心中的 Enabling the WebSphere MQ integration feature into an existing profile

在将 WebSphere MQ WSDL 文档加载到 WebSphere Service Registry and Repository 后,它会自动构建以下内容:

  • WSDL 逻辑端口对象,在该对象上,将在 MQ WSDL 文档中指定 MQ 队列和连接,以及队列管理器、队列和连接之间的关系
  • 队列管理器的表示
  • 队列和连接的表示

首先,您必须从 WebSphere MQ 中导出队列定义,然后将 WSDL 文件加载到 WebSphere Service Registry and Repository。

使用 WebSphere MQ Explorer 导出 WebSphere MQ 服务定义

  1. 从服务定义库中,右键单击需要导出的 WebSphere MQ 服务定义并单击 Export
    图 15
    图 15
  2. 选择新创建的服务定义,填充文件的目的地,然后单击 OK
    图 16
    图 16

    WSDL 文件将被导出到选择的目的地,以便能够将它加载到 WebSphere Service Registry and Repository 中。

将服务定义加载到 WebSphere Service Registry and Repository

  1. 打开 WebSphere Integration Developer 并创建一个新的工作空间。
  2. 启动 WebSphere ESB 服务器。
  3. 打开 WebSphere Service Registry and Repository Admin 控制台,位置为:http://localhost:9080/ServiceRegistry(您的机器上的服务器名称和端口可能有所不同)。
  4. 登录到 Administrator Perspective 后,找到保存从 MQ Explorer 导出的 WSDL 文档的位置,然后单击 OK 加载该文档:
    图 17
    图 17
    图 18
    图 18

启用 WebSphere MQ 集成特性后,在加载 WSDL 文档时,WebSphere Service Registry and Repository 会自动解析 WebSphere MQ WSDLs 并从服务定义中构建 MQ 实体。您可以使用 Governance Enablement Profile 中的 Development and SOA Governance 透视图查看创建的 MQ 实体。加载 MQ 服务定义 WSDL 文档后,您需要执行一些额外的配置步骤来准备 WebSphere Service Registry and Repository,以配合使用 WebSphere ESB Endpoint Lookup 原语。

在 WebSphere Integration Developer V7.0 和 WebSphere ESB V7.0 或更高版本中,Endpoint Lookup 原语仅支持附带 Associated Interface 的手动 MQ 端点,如 Endpoint Lookup 中介原语 下的 WebSphere Integration Developer 信息中心内部的主题所述。该信息中心主题包括一些重要的细节,因此请通读这些内容并重点关注以下方面。

  • 图 19
    图 19

配置带 Associated Interface 的手动 MQ 端点

  1. 以管理员身份登录到 WebSphere Service Registry and Repository Admin 控制台。
  2. 选择 Administrator 透视图。
  3. 在 Business Objects 部分中选择 Manual MQ Endpoint with Associated Interface:
    图 20
    图 20
  4. 选择 New,添加新端点:
    图 21
    图 21
  5. 按如下所示填充信息并选择 Add WSDL Port Type
    图 22
    图 22
    1. Name:为端点指定一个有意义的惟一名称。
    2. Name Space:输入一个有意义的惟一的名称空间。
    3. Version:由于这是一个新端点,因此版本从 V1.0 开始。
    4. Endpoint:WebSphere MQ URI,必须正确填写。它是查询的返回值,将被传递给 MQ Import。

    WebSphere MQ URI 的格式如下所示:

    图 23
    图 23
  6. 添加 WSDL Port Type。在搜索字段中加入一个星号,在 WebSphere Service Registry and Repository 中搜索所有有效的 WSDL 端口类型。选择您从 MQ 服务定义 WSDL 中导入的端口类型。选择 MQService_Port_PortType 并单击 Add:
    图 24
    图 24
  7. 单击 Finish 以完成设置。
    图 25
    图 25
  8. 对其余的两个队列定义重复这些步骤,为每个端点指定一个惟一名称。完成之后,您应当看到三个手动 MQ 端点:
    图 26
    图 26

向每个端点添加一个定制属性

  1. 选择列表中的第一个端点 My_Manual_MQ_Endpoint1_WI,它与 queue1 相关联。
  2. 在右上方,选择 Edit Properties:
    图 27
    图 27
  3. 展开 Additional Properties 部分并选择 Add Property:
    图 28
    图 28
  4. 添加名为 queue 的属性:
    图 29
    图 29
  5. 像属性添加值 queue1。

对其余两个队列重复这些步骤。您现在已经在 WebSphere Service Registry and Repository 中完成了 MQ 端点的设置。

配置 WebSphere ESB 运行时

检查 WebSphere Admin Console 的配置,确保 WebSphere Service Registry and Repository 已配置为与 WebSphere ESB 正确通信。有关详情,请参见 WebSphere Integration Developer 信息中心内的 Endpoint Lookup 中介原语,该主题介绍了如何配置到 WebSphere Service Registry and Repository 的连接,如下所示:

  • 图 30
    图 30
  1. 以管理员身份登录到 WebSphere Application Server Admin 控制台。
  2. 在 Service Integration 下,导航到 WebSphere Service Registry and Repository Definitions 链接:
    图 31
    图 31
  3. 如果配置正确,您应当会看到一个 WebSphere Service Registry and Repository 定义。您看到的内容可能采用不同的名称,但是没有关系。为该定义选择链接:
    图 32
    图 32
  4. 单击 Connection Properties:
    图 33
    图 33
  5. 确保 URL 正确无误(您的服务器名称和端口号可能有所不同):
    图 34
    图 34

创建一个新的中介模块

创建一个新的中介模块项目并进行配置,以便在 WebSphere Service Registry and Repository 中查询某个 MQ 端点。该查询将包括 SMO 中的内容,确保您选择正确的 MQ 目标队列。

  1. 创建一个新的中介模块项目。
  2. 创建一个新的具有单向操作的界面,如下所示:
    图 35
    图 35
  3. 向流程图中添加一个新的 Import,并将其与新创建的界面关联起来。
  4. 对 Import 配置 MQ 绑定,并提供如下所示的连接信息。您必须在 Properties 面板提供有效的连接信息,但是这些信息将被从 WebSphere Service Registry and Repository 返回的信息覆盖:
    图 36
    图 36
  5. 将界面与中介关联起来:
    图 37
    图 37
  6. 将中介流连接到 MQ Import:
    图 38
    图 38
  7. 双击中介流 SCA 组件,生成一个实现。
  8. 单击操作名,打开消息流程图:
    图 39
    图 39
  9. 向消息流程图添加一个 Endpoint Lookup 原语,并按如下所示进行配置:
    1. 在 Details Tab 中,提供 Port Type Name 和 Registry Name,后者为 WebSphere Application Server Admin 控制台中的 WebSphere Service Registry and Repositor 定义的名称。
    2. 将 Match Policy 设置为返回第一个匹配项。
    3. 将 Binding Type 设置为返回所有绑定类型:
      图 40
      图 40
  10. 单击 Advanced 部分并添加一个新的 User Property。将 Type 设置为 XPATH,以便能够从 SMO 中提取值。对于 Value,应使用该字段在 SMO 中的相对路径。在编辑该值时,XPATH Wizard 将为您构建 XPATH 表达式:
    图 41
    图 41
  11. 为消息流添加两个 Trace 节点,以显示 WebSphere Service Registry and Repository 返回的内容。不需要修改任何属性。按如下所示将它们连接起来:
    图 42
    图 42
  12. 添加一个 Service Invoke 原语,并按如下所示进行配置。确保选中复选框以启用一个动态端点。如果 WebSphere Service Registry and Repository 返回一个端点并将其放在 header 地址中,则会重写相关的 MQ Import 中定义的值:
    图 43
    图 43

测试

  1. 右键单击消息流 SCA 组件并单击 Test Component:
    图 44
    图 44
  2. 添加值 queue3 或任何其他有效队列名称。在 WebSphere Service Registry and Repository 查询中,该队列名称将用于 Endpoint Lookup。您可以修改队列名,这将影响 WebSphere Service Registry and Repository 查询,返回一个不同的端点:
    图 45
    图 45
  3. 如果成功,则会在 target/address 字段中看到 wmq URL 地址。您现在可以检查队列,查看队列中的消息。
  4. 默认的消息过期期限通常被设置为一个很低的值,因此消息很可能在几分钟后过期。在测试后检查队列深度,确保消息到达正确的队列:

图 46

单击查看大图,再次单击可展开图像

如欲了解更多信息,请参阅 WebSphere ESB 信息中心的文章 Dynamic invocation with wired MQ import, using SMO

还可参阅 WebSphere Integration Developer 信息中心中的 Endpoint Lookup 中介原语

参考资料

学习

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=819058
ArticleTitle=使用 WebSphere ESB 和 WebSphere Service Registry and Repository 配置动态 MQ 端点
publish-date=05312012