转载

配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

简介

在 IBM Integration Bus V10 之前,Integration 节点依靠队列管理器来连接到 IBM MQ。如果 Integration 节点需要处理一条传输到队列管理器的消息,则必须在队列管理器上运行该节点。从 IBM Integration Bus V10 开始,消除了对 IBM MQ 的依赖性。Integration 节点可单独运行,而不运行任何队列管理器。在本教程中,您将学习配置 IBM Integration Bus V10 与 IBM MQ V8 之间的 MQ 连接的不同方式。

要将 Integration 节点连接到 MQ 队列管理器,可在 MQInput 和 MQOutput 节点上选择以下选项:

  • 本地队列管理器
  • MQ 客户端连接属性
  • 客户端通道定义表 (Client Channel Definition Table, CCDT)

通过选择其中一种选项,Integration 节点可连接到队列管理器并传播消息。

设置系统

要配置本教程中介绍的组件和对象,必须满足以下技能和系统要求。

所需的技能

开始学习本教程之前,必须掌握以下领域的技能:

  • MQ 客户端 / 服务器架构的实现知识
  • IBM MQ 管理的中级知识
  • IBM Integration Bus 管理的中级知识
  • IBM Integration Bus 开发技能

系统要求

表 1 列出了这 3 种选项所需的基础架构设置。在该表中,“是” 表示安装在服务器上的产品,“不适用” 表示未安装或不适用于服务器的产品。

不需要 配置表 1 中列出的所有必备软件。因此,仅配置您打算在环境中实现的选项的前提软件。

表 1. 每个选项的服务器环境概述

选项 Microsoft®Windows 上的 IBM Integration Bus V10® Windows 上的 IBM Integration Bus V8 Windows 上的 IBM Integration Bus V8 Linux 上的 MQ V8®
本地队列管理器 不适用 不适用
MQ 客户端连接 不适用
CCDT 不适用

Integration 节点创建:您在使用 -q 标志或 mqsichangebroker 命令时不需要再次创建 Integration 节点。

为 Linux 服务器上的连接创建 MQ 对象

如果在 Linux 服务器上运行 MQ,可为 IBM Integration Bus 连接创建所需的 MQ 对象:

  1. 检查 MQ 的版本:

    -bash-4.1$ dspmqver

    清单 1 给出了显示的针对该 MQ 版本的输出示例。

    清单 1. MQ 版本细节

    Name:    WebSphere MQ   Version:    8.0.0.2   Level:    p800-002-150519.TRIAL   BuildType:   IKAP - (Production)   Platform:    WebSphere MQ for Linux (x86-64 platform)    Mode:    64-bit   0/S:     Linux 2.6.32-71.e16.x86_64   InstName:    Installation1   InstDesc:   Primary:    Yes   InstPath:   /opt/mqm   DataPath:   /var/mqm   MaxCmdLevel:   801
  2. 创建 IIB10_QM1IIB10_QM2 队列管理器:
    crtmqm IIB10_QM1   crtmqm IIB10_QM2
  3. 启动 IIB10_QM1IIB10_QM2 队列管理器:
    strmqm IIB10_QM1   strmqm IIB10_QM2
  4. 检查队列管理器的状态:
    -bash-4.1$ dspmq

    队列管理器已成功创建,它们的状态显示为 Running

    QMNAME(IIB10_QM1)   STATUS(Running)   QMNAME(IIB10_QM2)   STATUS(Running)
  5. IIB10_QM1 队列管理器下创建所需的对象:
    -bash-4.1$ runmqsc IIB10_QM1
    1. 定义本地队列:

      DEFINE QL(INPUT.QL)

      您会看到以下输出:

      AMQ8006: WebSphere MQ queue created.
    2. 定义通道:

      DEFINE CHANNEL(IIBV10.SVRCONN) CHLTYPE(SVRCONN)

      您会看到以下输出:

      AMQ8014: WebSphere MQ channel created.
    3. 定义监听器:

      DEFINE LISTENER(QM1.LIS) TRPTYPE(TCP) PORT(1025) CONTROL(QMGR)

      您会看到以下输出:

      AMQ8626: WebSphere MQ listener created.
    4. 启动监听器:

      START LISTENER(QM1.LIS)

      您会看到以下输出:

      AMQ8021: Request to start WebSphere MQ listener accepted.
  6. IIB10_QM1 队列管理器上的 IIB10_QM1

    创建客户端连接通道:

    DEFINE CHANNEL(IIBV10.SVRCONN) CHLTYPE(CLNTCONN) CONNAME('192.168.112.131(1025)') QMNAME(IIB10_QM1)

    您会看到以下输出:

    AMQ8014: WebSphere MQ channel created.
  7. 创建 IIB10_QM2 CLNTCONN 通道,以此作为 IIB10_QM1 队列管理器上的 IIB10_QM2

    的 CCDT 配置的一部分:

    DEFINE CHANNEL(IIBV10.QM2.SVRCONN) CHLTYPE(CLNTCONN) CONNAME('192.168.112.131(1026)') QMNAME(IIB1O_QM2)

    您会看到以下输出:

    AMQ8014: WebSphere MQ channel created.
  8. 提供 IIB10_QM1 队列管理器的权限,供 Integration 节点连接到该队列管理器:
    setmqaut -m IIB10_QM1 -t qmgr -p system +connect   setmqaut -m IIB10_QM1 -n INPUT.QL -t q -p system +inq +get
  9. 确保所有权限都反映了所使用的队列管理器:
    refresh security
  10. IIB10_QM2 队列管理器下创建所需的对象:
    bash-4.1$ runmqsc IIB10_QM2
    1. 定义本地队列:

      DEFINE QL(OUTPUT.QL)

      您会看到以下输出:

      AMQ8006: WebSphere MQ queue created.
    2. 定义通道:

      DEFINE CHANNEL(IIBV10.QM2.SVRCONN) CHLTYPE(SVRCONN)

      您会看到以下输出:

      AMQ8014: WebSphere MQ channel created.
    3. 定义监听器:

      DEFINE LISTENER(QM2.LIS) TRPTYPE(TCP) PORT(1026) CONTROL(QMGR)

      您会看到以下输出:

      AMQ8626: WebSphere MQ listener created.
  11. 提供 IIB10_QM2 队列管理器的权限,供 Integration 节点连接到该队列管理器:
    setmqaut -m IIB10_QM2 -t qmgr -p system +inq +connect +setall   setmqaut  -m IIB10_QM2  -n OUTPUT.QL -t q -p system +put +setall
  12. 确保所有权限都反映了所使用的队列管理器:
    refresh security

为 Windows 服务器上的连接创建 MQ 对象

如果在 Windows 服务器上运行 MQ,可为 IBM Integration Bus 连接创建所需的 MQ 对象:

  1. 创建 LOCAL_QM1LOCAL_QM2 队列管理器:
    crtmqm LOCAL_QM1   crtmqm LOCAL_QM2
  2. 启动 LOCAL_QM1LOCAL_QM2 队列管理器:
    strmqm LOCAL_QM1   strmqm LOCAL_QM2
  3. 检查队列管理器的状态:
    -bash-4.1$ dspmq

    队列管理器已成功创建,它们的状态显示为 Running

    QMNAME(LOCAL_QM1)    STATUS(Running)   QMNAME(LOCAL_QM2)    STATUS(Running)
  4. LOCAL_QM1 队列管理器下创建所需的对象:
    runmqsc LOCAL_QM1
  5. 定义本地队列:

    DEFINE QL(INPUT.QL)

    您会看到以下输出:

    AMQ8006: WebSphere MQ queue created.
  6. LOCAL_QM2 队列管理器下创建所需的对象:
    runmqsc LOCAL_QM2
  7. 定义本地队列:

    DEFINE QL(OUTPUT.QL)

    您会看到以下输出:

    AMQ8006: WebSphere MQ queue created.

配置 Windows 服务器上的 IBM Integration Bus

要配置 Windows 服务器上的 IBM Integration Bus:

  1. 创建 IIBV10 Integration 节点,其中 IIBV10

    是代理名称,Integration 节点没有任何队列管理器依赖性:

    mqsicreatebroker IIBV10

    创建 Integration 节点后,可以看到以下输出:

    BIP8071I: Successful command completion.
  2. 检查 Integration 节点的状态:

    mqsilist

    将显示以下状态。

    BIP1326I: Integration node 'IIBV10' is stopped.   BIP8071I: Successful command completion.
  3. 启动 Integration 节点:

    mqsistart IIBV10

    您会看到以下输出:

    BIP8096I: Successful command initiation.
  4. 使用 IBM Integration Toolkit 检查 Integration 节点属性(图 1)。在 Integration 节点属性上指定的队列管理器表明,没有队列管理器与此 Integration 节点有关联。

    图 1. 使用 IBM Integration Toolkit 验证 Integration 节点

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

消息流

我们使用 IBM Integration Toolkit 开发了一个示例消息流。可以将它用于本教程中描述的所有 3 种方法。此消息流演示了以下队列管理器的连接:

  • 在 Linux 上运行的 IIB10_QM1IIB10_QM2
  • 在 Windows 上运行的 LOCAL_QM1LOCAL_QM2

图 2 演示了一个接受 XML 格式的消息并按如下路线传输它们的流:

  • 从 Linux 上运行的 IIB10_QM1IIB10_QM2 (针对 MQ 客户端连接属性和 CCDT 方法)
  • 从 Windows 上运行的 LOCAL_QM1LOCAL_QM2 (针对本地队列管理器方法)

图 2. XML 格式的消息流

配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

属性配置

对于所有 3 种场景,都使用了 MQ Enterprise Transport 配置属性。

因为使用了消息流将 XML 消息从一个队列管理器传输到另一个队列管理器,所以需要一种 MQ 级别上的分发设置。开发消息流时,该流对消息的处理取决于节点的属性。举例而言,通过设置定义 MQ 的 INPUT 和 OUTPUT 队列名称的属性,可以确定消息流从何处接收消息和将消息传送到何处。

图 3 给出了一条从 LOCAL_QM1 队列管理器传输到 LOCAL_QM2 队列管理器的消息的传输路线。显示的客户端环境有两个队列管理器( LOCAL_QM1LOCAL_QM2 )和 IBM Integration Bus ( IIBV10 )。它们安装在同一个 Windows 服务器上。来源应用程序将一条消息放在 LOCAL_QM1 队列管理器下的 INPUT.QL 队列上。然后,消息流拾取消息并将它发送到目标应用程序的 LOCAL_QM2 队列管理器下的 OUTPUT.QL 队列。

图 3. 将消息从 LOCAL_QM1 路由到 LOCAL_QM2

配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

图 4 给出了从 IIBV10_QM1 传输到 IIBV10_QM2 的消息的路线。客户端环境在一个 Linux 服务器上有两个队列管理器( IIB10_QM1IIB10_QM2 ),在一个 Windows 服务器上有一个 IBM Integration Bus ( IIBV10 )。putter 应用程序将一条消息放在 IIB10_QM1 下的 INPUT.QL 队列上。然后,消息流拾取消息并将它发送到 getter 应用程序的 IIB10_QM2 下的 OUTPUT.QL 队列。

图 4. 将消息从 IIBV10_QM1 路由到 IIBV10_QM2

配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

场景 1:本地队列管理器

在此场景中,IBM Integration Bus v10 和 IBM MQ V8 都安装在同一个 Windows 服务器上,两个组件都在 Binding 模式下建立连接。在 Binding 模式下,IBM Integration Bus 和 MQ 在同一个服务器上彼此连接。另外,还与使用服务器绑定的本地队列管理器建立了本地连接。与远程队列管理器建立了一个客户端连接。可以使用本地连接、客户端连接或本地与客户端连接的组合方式来连接到队列管理器。

如果选择使用本地队列管理器,则必须指定一个队列管理器名称。消息流(使用服务器绑定)与该队列建立一个服务器连接。Integration 节点和队列管理器必须在同一个服务器上运行。

配置 MQInput 节点属性

MQInput 节点从应用程序接收消息,并使用 IBM MQ Enterprise Transport 连接到 Integration 节点。

要配置 MQInput 节点属性:

  1. 更新 INPUT.QL 队列名称:
    1. 导航到 MQ Input Node Properties 窗口(图 5)。
    2. Basic 选项卡上,对于 Queue name ,输入 INPUT.QL

    图 5. Queue name 属性

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接
  2. 更新 LOCAL_QM1 队列管理器的连接细节:
    1. 转到 MQ Input Node Properties 窗口(图 6)。
    2. MQ Connection 选项卡上,对于 Connection ,输入 Local queue manager 。对于 Destination queue manager name ,输入 LOCAL_QM1

    图 6. LOCAL_QM1 队列管理器的连接细节

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

配置 MQOutput 节点属性

MQOutput 节点将一条输出消息从一个消息流传送到一个 MQ 队列。该节点使用 MQPUT 将消息放入目标队列或您指定的队列中。

要配置 MQOutput 节点属性:

  1. 更新 OUTPUT.QL 队列名称:
    1. 转到 MQ Output Node Properties 窗口(图 7)。
    2. Basic 选项卡上,对于 Queue name ,输入 OUTPUT.QL

    图 7. Queue name 属性

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接
  2. 更新 LOCAL_QM2 队列管理器的连接细节:
    1. 转到 MQ Output Node Properties 窗口(图 8)。
    2. MQ Connection 选项卡上,对于 Connection ,输入 Local queue manager 。对于 Destination queue manager name ,输入 LOCAL_QM2

    图 8. LOCAL_QM2 队列管理器的连接细节

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

确认数据流引擎连接

要确认与队列的数据流引擎连接,可显示队列状态:

runmqsc LOCAL_QM1   dis qs(INPUT.QL) type(handle)

清单 2 中的输出显示了 APPLTAG(erver/bin/DataFlowEngine.exe) ,它表明队列正在监听数据流引擎。

清单 2. 数据流引擎连接的队列状态

AMQ8450: Display queue status details.   QUEUE(INPUT.QL)    TYPE(HANDLE)   APPLDESC( )   APPLTAG(erver/bin/DataFlowEngine.exe)   APPLTYPE(USER)    BROWSE(NO)   CHANNEL( )     CONNAME( )   ASTATE(ACTIVE)     HSTATE(ACTIVE)   INPUT(SHARED)     INQUIRE(YES)   OUTPUT(NO)     PID(5260)   QMURID(0.12291)    SET(NO)   TID(*)   URID(XA_FORMATID[] XA_GTRIDH[] XA_BQUAL[])   URTYPE(QMGR)     USERID(SYSTEM@NT AUTHORITY)

如图 9 所示, INPUT.QL 队列名称的当前队列深度为 0。它还给出了所显示的消息数据。在 MQ Explorer 中,使用 PUT 命令将消息放入 LOCAL_QM1 队列管理器上的 INPUT.QL 队列中。

图 9. INPUT.QL 的当前队列深度和消息数据

配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

如图 10 所示, OUTPUT.QL 队列的当前队列深度现在为 1。此值确认消息流从 LOCAL_QM1 队列管理器上的 INPUT.QL 队列拾取了消息,并将它发送到 LOCAL_QM2 队列管理器上的 OUTPUT.QL 队列。

图 10. OUTPUT.QL 的当前队列深度

配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

通过使用 IBM Integration Toolkit, LOCAL_QM2 队列管理器上的 OUTPUT.QL 队列的当前队列深度从 0 更改为 1(图 11)。此更改确认该消息已发送。另外,消息数据是从 LOCAL_QM1 队列管理器上的 INPUT.QL 队列发出的同一条消息的数据。

图 11. OUTPUT.QL 的当前队列深度和消息数据

配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

场景 2:MQ 客户端连接属性

如果选择定义 MQ 客户端连接属性,还必须指定以下属性:

  • 队列管理器主机名
  • 监听器端口号
  • 通道名称
  • MQInput 节点上的目标队列管理器名称
  • MQOutput 节点上的目标队列管理器名称

在此示例中,Integration 节点在 Windows 服务器上运行,队列管理器在 Linux 服务器上运行。

配置 MQInput 节点属性

要配置 MQInput 节点属性:

  1. 更新 INPUT.QL 队列名称:
    1. 转到 MQInput Node Properties 窗口(图 12)。
    2. Basic 选项卡上,对于 Queue name,输入 INPUT.QL

    图 12. MQInput 节点的 Queue name 属性

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接
  2. 更新 IIB10_QM1 队列管理器的连接细节:
    1. 转到 MQ Input Node Properties 窗口。
    2. MQ Connection 选项卡上(图 13):
      1. 对于 Connection ,输入 MQ client Connection properties
      2. 对于 Destination queue manager name ,输入 IIB10_QM1
      3. 对于 Queue manager host name ,输入 IP 地址。
      4. 对于 Listener port number ,输入 1025
      5. 对于 Channel name ,输入 IIBV10.SVRCONN

    图 13. IIB10_QM1 的连接细节

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

配置 MQOutput 节点属性

要配置 MQOutput 节点属性:

  1. 更新 OUTPUT.QL 队列名称:
    1. 转到 MQ Output Node Properties 窗口(图 14)。
    2. Basic 选项卡上,对于 Queue name ,输入 OUTPUT.QL

    图 14. 图 14. MQOutput 节点的 Queue name 属性

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接
  2. 更新 IIB10_QM2 队列管理器的连接细节:
    1. 转到 MQ Output Node Properties 窗口(图 15)。
    2. MQ Connection 选项卡上:
      1. 对于 Connection ,输入 MQ client connection properties
      2. 对于 Destination queue manager name ,输入 IIB10_QM2
      3. 对于 Queue Manager Host Name, 输入 IP 地址。
      4. 对于 Listener Port Number ,输入 1026
      5. 对于 Channel Name ,输入 IIBV10.QM2.SVRCONN

    图 15. IIB10_MQ2 的连接细节

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

测试 MQ 客户端连接

测试消息流之前, INPUT.QLOUTPUT.QL 队列的初始当前深度 ( CURDEPTH ) 为 0,这表示该队列中没有消息。要测试客户端连接:

  1. 启动 IIB10_QM1 队列管理器的 MQSC 命令:
    -bash-4.1$ runmqsc IIB10_QM1
  2. 显示 INPUT.QL 队列的当前深度:
    dis ql(INPUT.QL) CURDEPTH

    CURDEPTH 为 0,如下面的输入队列细节所示:

    AMQ40409: Display Queue details.   QUEUE(INPUT.QL)    TYPE(QLOCAL)   CURDEPTH(0)
  3. 启动 IIB10_QM2 队列管理器的 MQSC 命令:
    -bash-4.1$ runmqsc IIB10_QM2
  4. 显示 OUTPUT.QL 队列的当前深度:
    dis ql(OUTPUT.QL) CURDEPTH

    CURDEPTH 为 0,如下面的输出队列细节所示:

    AMQ8409: Display Queue details.   QUEUE(OUTPUT.QL)    TYPE(QLOCAL)   CURDEPTH(0)
  5. INPUT.QL

    上放入一条示例消息:

    -bash-4.1$ ./amqsput INPUT.QL IIB10_QM1

    您会看到以下输出:

    Sample AMQSPUT0 start   target queue is INPUT.QL   <XML>I am using IIBV10 and MQV8.0</XML>    Sample AMQSPUT0 end
  6. 启动 IIB10_QM2

    队列管理器的 MQSC 命令:

    -bash-4.1$ runmqsc IIB10_QM2

    您会看到以下输出:

    Starting MQSC for queue manager IIB10_QM2.
  7. 显示 OUTPUT.QL 队列的当前深度:
    dis ql(OUTPUT.QL) CURDEPTH

    如以下输出所示, CURDEPTH 是 1,表示该消息流已成功将消息处理到输出队列:

    AMQ8409: Display Queue details.   QUEUE(OUTPUT.QL)    TYPE(QLOCAL)   CURDEPTH(1)   END
  8. 验证与 IIB10_QM1 队列管理器的流连接:
    dis chs(IIBVlO.SVRCONN) all

    数据流引擎(执行组)正在监听,服务器连接通道 IIBV10.SVRCONN 正在运行。MQInput 节点已连接到服务器连接通道,这表明已在此场景中成功建立连接(清单 3)。

    清单 3. 连接到 IIB10_QM1 队列管理器的消息流

    AMQ8417: Display Channel Status details.   CHANNEL(IIBV10.SVRCONN)   CHLTYPE(SVRCONN)   BUFSRCVD(46)     BUFSSENT(5)   BYTSRCVD(4296)    BYTSSENT(2152)   CHSTADA(2015-10-05)   CHSTAII(12.04.28)   COMPHDR(NONE,NONE)    COMPMSG(NONE,NONE)   COMPRATE(0,0)     COMPTIME(0,0)   CONNAME(192.168.112.1)   CURRENT   EXITTIME(0,0)     HBINT(300)   JOBNAME(000ooF3600000121)   LOCLADDR(::ffff:192.168.112.l31(1025))   LSTMSGDA(2015-lO-05)   LSTMSGTI(12.04.28)   MCASTAI(RUNNING)    MCAUSER(system)   MONCHL(OFF)     MSGS(3)   RAPPLTAG(erver/bin/DataFlowEngine.exe)   SECPROT(NONE)     SSLCERTI()   SSLKEYDA( )     SSLKEYTI()   SSLPEER( )     SSLRKEYS(0)   STAIUS(RUNNING)    STOPREQ(NO)   SUBSTAIE(RECEIVE)    CURSHCNV(1)   MAXSHCNV(10)     RVERSION(08000002)   RPRODUCT(MQCC)
  9. 验证与 IIB10_QM2 队列管理器的流连接:
    dis chs(IIBVlO.QM2.SVRCONN) all

    如清单 4 所示,数据流引擎(执行组)正在进行监听,服务器连接通道 IIBV10.SVRCONN 正在运行。这些结果证明,MQOutput 节点已连接到服务器连接通道,这表明已成功建立连接。

    清单 4. 连接到 IIB10_QM2 队列管理器的消息流

    AMQ8417: Display Channel Status details.   CHANNEL(IIBV10.QM2.SVRCONN)   CHLTYPE(SVRCONN)   BUFSRCVD(10)      BUFSSENT(9)   BYTSRCVD(2884)     BYTSSENT(2844)   CHSTADA(2015-10-05)    CHSTATI(12.05.55)   COMPHDR(NONE,NONE)     COMRMSG(NONE,NONE)   COMPRATE(0,0)      COMPTIME(0,0)   CONNAME(192.168.112.1)    CURRENT   EXITTIME(0,0)      HBINT(300)   JOBNAME(OOOOIOZBOOOOOOOD)   LOCLADDR(::ffff:192.168.112.131(1026))   LSTMSGDA(2015-lO-05)    LSTMSGTI(12.05.55)   MCASTAT(RUNNING)     MCAUSER(system)   MONCHL(OFF)      MSGS(7)   RAPPLTAG(erver/bin/DataFlowEngine.exe)   SECPROT(NONE)      SSLCERTI()   SSLKEYDA( )      SSLKEYTI()   SSLPEER( )      SSLRKEYS(0)   STATUS(RUNNING)     STOPREQ(NO)   SUBSTATE(RECEIVE)     CURSHCNV(1)   MAXSHCNV(10)      RVERSION(08000002)   RPRODUCT(MQCC)
  10. OUTPUT.QL

    队列获取示例消息:

    -bash-4.1$ ./amqsget OUTPUT.QL IIB10_QM2

    您会看到以下输出:

    Sample AMQSGET0 start   message <XML>I am using IIBV10 and MQV8.0</XML>

您现在已使用 AMQSPUT 程序将示例消息放在 INPUT.QL 上。消息流从 INPUT.QL 队列拾取该消息,并将它发送到 IIB10_QM2 上的 OUTPUT.QL 队列。您还可以看到 CURDEPTH 被更改为 1。

场景 3:客户端通道定义表

在此示例中,Integration 节点在 Windows 系统上运行,队列管理器在 Linux 系统上运行。如果选择 CCDT 选项,则必须指定一个队列管理器名称,并在 Windows 系统上配置 MQ CCDT 文件。

配置 MQInput 节点属性

要配置 MQInput 节点属性:

  1. 更新 INPUT.QL 队列名称:
    1. 转到 MQ Input Node Properties 窗口(图 16)。
    2. Basic 选项卡上,对于 Queue name,输入 INPUT.QL

    图 16. MQInput 节点的 Queue name 属性

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接
  2. 更新 IIB10_QM1 队列管理器的 MQ 客户端连接细节:
    1. 转到 MQ Input Node Properties 窗口(图 17)。
    2. MQ Connection 选项卡上,对于 Connection ,输入 Client channel definition table (CCDT) file 。对于 Destination queue manager name ,输入 IIB10_QM1

    图 17. IIB10_QM1 的连接细节

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

配置 MQOutput 节点属性

要配置 MQOutput 节点属性:

  1. 更新 OUTPUT.QL 队列名称:
    1. 转到 MQ Output Node Properties 窗口(图 18)。
    2. Basic 选项卡上,对于 Queue name ,输入 OUTPUT.QL

    图 18. MQOutput 节点的 Queue name 属性

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接
  2. 更新 IIB10_QM2 队列管理器的连接细节:
    1. 转到 MQ Output Node Properties 窗口(图 19)。
    2. MQ Connection 选项卡上,对于 Connection ,输入 Client channel definition table (CCDT) file 。对于 Destination queue manager name ,输入 IIB10_QM2

    图 19. IIB10_MQ2 队列管理器的连接细节

    配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

向 Integration 节点注册 CCDT 文件

使用 FTP、SFTP 或 WINSCP 实用程序将 AMQCLCHL.TAB CCDT 文件从 MQ Linux 服务器复制到 Windows 服务器。然后,向 Integration 节点注册 AMQCLCHL.TAB 文件:

mqsichangeproperties IIBV10 -o BrokerRegistry -n mqCCDT -v "C:/Users/MVP/Documents/AMQCLCHL.TAB"

找到 Integration 节点注册表的 CCDT 文件

指定 Integration 节点注册表的 CCDT 文件的位置:

C:/Program Files/IBM/IIB/10.0.0.0>mqsichangeproperties IIBV10 -o BrokerRegistry -n mqCCDT -v "C:/Users/MVP/Documents/AMQCLCHL.TAB"

可以看到以下消息:

BIP8071I: Successful command completion

检查 CCDT 文件分配

选择 mqCCDT 属性后,重新启动 Integration 节点,以便让更改在所有配置中生效。要检查 mqCCDT 属性是否已向 IIBV10 Integration 节点注册,可以使用以下命令:

mqsireportproperties IIBVIO -o BrokerRegistry – r BrokerRegistry

清单 5 给出了命令输出。

清单 5. 分配给 Integration 节点注册表的 CCDT 文件

uuid='BrokerRegistry'  brokerKeystoreType='3KS'  brokerKeystoreFi1e=''  brokerKeystorePass='brokerKeystore::password'  brokerTruststoreType='JKS'  brokerTruststoreFile=''  brokerTruststorePass='brokerTruststore::password'  brokerCRLFileList=''  httpConnectorPortRange=''  httpsConnectorPortRange=''  brokerKerberosConfigFi1e=''  brokerKerberosKeytabFile=''  allowSSLv3=''  mqCCDT='C:/Users/MVP/Documents/AMQCLCHL.TAB'  modeExtensions="

确认数据流引擎连接

要确认与该队列的数据流引擎连接:

  1. 启动 IIB10_QM1 队列管理器的 MQSC 命令:
    -bash-4.1$ runmqsc IIB10_QM1
  2. 显示 IIB10_QM1 队列管理器的队列状态:
    DIS CHS(*) all

    数据流引擎(执行组)正在监听,服务器连接通道 IIBV10.SVRCONN 正在 IIB10_QM1 队列管理器中运行(清单 6)。这些结果证明,MQInput 节点已连接到服务器连接通道,这表明已成功建立连接。

    清单 6. 与 IIB10_QM1 队列管理器的流连接

    AMQ8417: Display Channel Status details.   CHANNEL(IIBV10.SVRCONN)    CHLTYPE(SVRCONN)   BUFSRCVD(156)      BUFSSENT(5)   BYTSRCVD(10184)     BYTSSENT(2152)   CHSTADA(2015-10-05)    CHSTAII(12.20.00)   COMPHDR(NONE,NONE)     COMRMSG(NONE,NONE)   COMPRATE(0,0)      COMPTIME(0,0)   CONNAME(192.168.112.1)    CURRENT   EXITTIME(0,0) HBINT(300)   JOBNAME(OOOOOFBGOOOOOIBF)   LOCLADDR(::ffff:192.168.112.131(1025))   LSTMSGDA(2015-lO-05)    LSTMSGTI(12.20.00)   MCASTAI(RUNNING)     MCAUSER(system)   MONCHL(OFF)      MSGS(3)   RAPPLTAG(erver/bin/DataFlowEngine.exe)   SECPROT(NONE)      SSLCERTI()   SSLKEYDA( )      SSLKEYTI()   SSLPEER( )      SSLRKEYS(O)   STAIUS(RUNNING)     STOPREQ(NO)   SUBSTAIE(RECEIVE)     CURSHCNV(1)   MAXSHCNV(10)      RVERSION(08000002)   RPRODUCT(MQCC)
  3. 启动 IIB10_QM2 队列管理器的 MQSC 命令:
    -bash-4.1$ runmqsc IIB10_QM2
  4. 显示 IIB10_QM2 队列管理器的队列状态:
    dis chs(*) all

    如清单 7 所示,数据流引擎(执行组)正在进行监听,服务器连接通道 IIBV10.QM2.SVRCONN 正在 IIB10_QM2 队列管理器中运行。这些结果证明,MQOutput 节点已连接到服务器连接通道,这表明已成功建立连接。

    清单 7. 与 IIB10_QM2 队列管理器的流连接

    AMQ8417: Display Channel Status details.   CHANNEL(IIBV10.QM2.SVRCONN)   CHLTYPE(SVRCONN)   BUFSRCVD(10)      BUFSSENT(9)   BYTSRCVD(2876)     BYTSSENT(2844)   CHSTADA(2015-10-05)    CHSTAII(12.22.05)   COMPHDR(NONE,NONE)     COMRMSG(NONE,NONE)   COMPRATE(0,0)      COMPTIME(0,0)   CONNAME(192.168.112.1)    CURRENT   EXITTIME(0,0)      HBINT(300)   JOBNAME(00001OZBOOOOOOOE)   LOCLADDR(::ffff:192.168.112.131(1026))   LSTMSGDA(2015-10-05)    LSTMSGTI(12.22.05)   MCASTAI(RUNNING)     MCAUSER(systam)   MONCHL(OFF)      MSGS(7)   RAPPLTAG(erver/bin/DataFlowEngine.exe)   SECPROT(NONE)      SSLCERTI()   SSLKEYDA( )      SSLKEYTI()   SSLPEER( )      SSLRKEYS(0)   STAIUS(RUNNING)     STOPREQ(NO)   SUBSTAIE(RECEIVE)     CURSHCNV(1)   MAXSHCNV(10)      RVERSION(08000002)   RPRODUCT(MQCC)
  5. 检查 OUTPUT.QL 队列的 CURDEPTH
    DIS QL(OUTPUT.QL) CURDEPTH

    消息流从 IIB10_QM1 队列管理器上的 INPUT.QL 队列拾取了消息,并将它发送到 IIB10_QM2 队列管理器上的 OUTPUT.QL 队列。如清单 8 所示, CURDEPTH 现在已更改为 1。

    清单 8. OUTPUT.QL CURDEPTH

    AMQ8409: Display Queue details.   QUEUE(OUTPUT.QL)    TYPE(QLOCAL)   CURDEPTH(1)
  6. 浏览 IIB10_QM2 队列管理器上的 OUTPUT.QL

    队列上的示例消息:

    -bash-4.1$ ./amqsget OUTPUT.QL IIB10_QM2

    可以看到以下消息:

    Sample AMQSGET0 start   message <XML>I am using CCDT File</XML>

CCDT 设置的挑战

如果 CCDT 文件配置(比如 CCDT 文件的通道名称或位置)未正确定义,您可能会遇到图 20 中所示的错误。

图 20. 错误的 CCDT 配置

配置 IBM Integration Bus V10 和 IBM MQ V8 之间的 MQ 连接

此错误消息表明未能与队列管理器建立 CCDT 连接。要更正此错误,必须检查以下区域:

  • MQ 客户端通道定义
  • 端口号
  • CCDT 文件的位置:创建 CCDT 文件后,必须以二进制模式传输该文件。
  • 客户端 / 服务器连接通道名称:在创建 CCDT 文件之前,这些名称必须匹配。
  • CCDT 文件的位置

    重要事项:不要打开或修改 CCDT 文件。修改该文件可能导致 CCDT 无法工作,而且有可能导致错误。

结束语

本教程介绍了 IBM Integration Bus V10 和 MQ V8 之间的配置和连接,还介绍了将 Integration 节点连接到 MQ 队列管理器的 3 个选项。这些选项包括本地队列管理器、MQ 客户端连接属性和客户端通道定义表。其中的场景演示了如何创建队列管理器,使用 CCDT 创建 MQ 通道,以及 IBM Integration 节点。本文还介绍了如何使用 MQ Connection 属性配置 IBM Integration Bus 消息流。

致谢

特别感谢 Ganesh Gopalakrishnan、Rajish E. Pattavalapil 和 Arundeep B. Veerabhadraiah 在创作本教程期间提供的帮助和宝贵建议。

参考资料

学习更多知识。开发更多项目。联系更多同行。

全新的 developerWorks Premium 会员计划提供了强大的开发工具和资源,包括 500 篇通过 Safari Books Online 提供的顶级技术文章(其中超过 15 篇文章是专门面向 Java 开发人员的)、最重要开发人员活动的大幅折扣、最新的 O'Reilly 大会的视频回放,等等。立即注册。

IBM MQ

  • IBM 知识中心:
    • IBM MQ Version 8 文档
    • “客户端通道定义表 (CCDT)” 主题
    • “在不同的平台上创建服务器连接和客户端连接” 主题
  • 访问 mqseries.net 上的 IBM MQ 论坛 ,了解用户问题、答案和技巧。
  • IBM developerWorks WebSphere 专区中的 IBM MQ 文章和教程

IBM Integration Bus

  • IBM 知识中心
    • IBM Integration Bus Version 10 文档
    • “配置与 MQ 的本地连接” 主题
  • IBM Integration 社区
  • developerWorks WebSphere 专区中的 IBM Integration Bus 文章和教程
  • IBM developerWorks 中国 WebSphere 专区 :为使用 WebSphere 产品的开发人员准备的技术信息和资料。这里提供产品下载、how-to 信息、支持资源以及免费技术库,包含 2000 多份技术文章、教程、最佳实践、IBM Redbook 和在线产品手册。
  • 加入 developerWorks 中文社区 ,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
原文  http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1602_movva-trs/1602_Movva.html?ca=drs-
正文到此结束
Loading...