在 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 节点上选择以下选项:
通过选择其中一种选项,Integration 节点可连接到队列管理器并传播消息。
要配置本教程中介绍的组件和对象,必须满足以下技能和系统要求。
开始学习本教程之前,必须掌握以下领域的技能:
表 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,可为 IBM Integration Bus 连接创建所需的 MQ 对象:
检查 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
IIB10_QM1
和 IIB10_QM2
队列管理器: crtmqm IIB10_QM1 crtmqm IIB10_QM2
IIB10_QM1
和 IIB10_QM2
队列管理器: strmqm IIB10_QM1 strmqm IIB10_QM2
-bash-4.1$ dspmq
队列管理器已成功创建,它们的状态显示为 Running :
QMNAME(IIB10_QM1) STATUS(Running) QMNAME(IIB10_QM2) STATUS(Running)
IIB10_QM1
队列管理器下创建所需的对象: -bash-4.1$ runmqsc IIB10_QM1
定义本地队列:
DEFINE QL(INPUT.QL)
您会看到以下输出:
AMQ8006: WebSphere MQ queue created.
定义通道:
DEFINE CHANNEL(IIBV10.SVRCONN) CHLTYPE(SVRCONN)
您会看到以下输出:
AMQ8014: WebSphere MQ channel created.
定义监听器:
DEFINE LISTENER(QM1.LIS) TRPTYPE(TCP) PORT(1025) CONTROL(QMGR)
您会看到以下输出:
AMQ8626: WebSphere MQ listener created.
启动监听器:
START LISTENER(QM1.LIS)
您会看到以下输出:
AMQ8021: Request to start WebSphere MQ listener accepted.
IIB10_QM1
队列管理器上的 IIB10_QM1
创建客户端连接通道:
DEFINE CHANNEL(IIBV10.SVRCONN) CHLTYPE(CLNTCONN) CONNAME('192.168.112.131(1025)') QMNAME(IIB10_QM1)
您会看到以下输出:
AMQ8014: WebSphere MQ channel created.
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.
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
refresh security
IIB10_QM2
队列管理器下创建所需的对象: bash-4.1$ runmqsc IIB10_QM2
定义本地队列:
DEFINE QL(OUTPUT.QL)
您会看到以下输出:
AMQ8006: WebSphere MQ queue created.
定义通道:
DEFINE CHANNEL(IIBV10.QM2.SVRCONN) CHLTYPE(SVRCONN)
您会看到以下输出:
AMQ8014: WebSphere MQ channel created.
定义监听器:
DEFINE LISTENER(QM2.LIS) TRPTYPE(TCP) PORT(1026) CONTROL(QMGR)
您会看到以下输出:
AMQ8626: WebSphere MQ listener created.
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
refresh security
如果在 Windows 服务器上运行 MQ,可为 IBM Integration Bus 连接创建所需的 MQ 对象:
LOCAL_QM1
和 LOCAL_QM2
队列管理器: crtmqm LOCAL_QM1 crtmqm LOCAL_QM2
LOCAL_QM1
和 LOCAL_QM2
队列管理器: strmqm LOCAL_QM1 strmqm LOCAL_QM2
-bash-4.1$ dspmq
队列管理器已成功创建,它们的状态显示为 Running :
QMNAME(LOCAL_QM1) STATUS(Running) QMNAME(LOCAL_QM2) STATUS(Running)
LOCAL_QM1
队列管理器下创建所需的对象: runmqsc LOCAL_QM1
定义本地队列:
DEFINE QL(INPUT.QL)
您会看到以下输出:
AMQ8006: WebSphere MQ queue created.
LOCAL_QM2
队列管理器下创建所需的对象: runmqsc LOCAL_QM2
定义本地队列:
DEFINE QL(OUTPUT.QL)
您会看到以下输出:
AMQ8006: WebSphere MQ queue created.
要配置 Windows 服务器上的 IBM Integration Bus:
IIBV10
Integration 节点,其中 IIBV10
是代理名称,Integration 节点没有任何队列管理器依赖性:
mqsicreatebroker IIBV10
创建 Integration 节点后,可以看到以下输出:
BIP8071I: Successful command completion.
检查 Integration 节点的状态:
mqsilist
将显示以下状态。
BIP1326I: Integration node 'IIBV10' is stopped. BIP8071I: Successful command completion.
启动 Integration 节点:
mqsistart IIBV10
您会看到以下输出:
BIP8096I: Successful command initiation.
图 1. 使用 IBM Integration Toolkit 验证 Integration 节点
我们使用 IBM Integration Toolkit 开发了一个示例消息流。可以将它用于本教程中描述的所有 3 种方法。此消息流演示了以下队列管理器的连接:
IIB10_QM1
和 IIB10_QM2
LOCAL_QM1
和 LOCAL_QM2
图 2 演示了一个接受 XML 格式的消息并按如下路线传输它们的流:
IIB10_QM1
到 IIB10_QM2
(针对 MQ 客户端连接属性和 CCDT 方法) LOCAL_QM1
到 LOCAL_QM2
(针对本地队列管理器方法) 图 2. XML 格式的消息流
对于所有 3 种场景,都使用了 MQ Enterprise Transport 配置属性。
因为使用了消息流将 XML 消息从一个队列管理器传输到另一个队列管理器,所以需要一种 MQ 级别上的分发设置。开发消息流时,该流对消息的处理取决于节点的属性。举例而言,通过设置定义 MQ 的 INPUT 和 OUTPUT 队列名称的属性,可以确定消息流从何处接收消息和将消息传送到何处。
图 3 给出了一条从 LOCAL_QM1
队列管理器传输到 LOCAL_QM2
队列管理器的消息的传输路线。显示的客户端环境有两个队列管理器( LOCAL_QM1
和 LOCAL_QM2
)和 IBM Integration Bus ( IIBV10
)。它们安装在同一个 Windows 服务器上。来源应用程序将一条消息放在 LOCAL_QM1
队列管理器下的 INPUT.QL
队列上。然后,消息流拾取消息并将它发送到目标应用程序的 LOCAL_QM2
队列管理器下的 OUTPUT.QL
队列。
图 3. 将消息从 LOCAL_QM1 路由到 LOCAL_QM2
图 4 给出了从 IIBV10_QM1
传输到 IIBV10_QM2
的消息的路线。客户端环境在一个 Linux 服务器上有两个队列管理器( IIB10_QM1
和 IIB10_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 都安装在同一个 Windows 服务器上,两个组件都在 Binding 模式下建立连接。在 Binding 模式下,IBM Integration Bus 和 MQ 在同一个服务器上彼此连接。另外,还与使用服务器绑定的本地队列管理器建立了本地连接。与远程队列管理器建立了一个客户端连接。可以使用本地连接、客户端连接或本地与客户端连接的组合方式来连接到队列管理器。
如果选择使用本地队列管理器,则必须指定一个队列管理器名称。消息流(使用服务器绑定)与该队列建立一个服务器连接。Integration 节点和队列管理器必须在同一个服务器上运行。
MQInput 节点从应用程序接收消息,并使用 IBM MQ Enterprise Transport 连接到 Integration 节点。
要配置 MQInput 节点属性:
INPUT.QL
队列名称: INPUT.QL
。 图 5. Queue name 属性
LOCAL_QM1
队列管理器的连接细节: Local queue manager
。对于 Destination queue manager name ,输入 LOCAL_QM1
。 图 6. LOCAL_QM1 队列管理器的连接细节
MQOutput 节点将一条输出消息从一个消息流传送到一个 MQ 队列。该节点使用 MQPUT
将消息放入目标队列或您指定的队列中。
要配置 MQOutput 节点属性:
OUTPUT.QL
。 图 7. Queue name 属性
LOCAL_QM2
队列管理器的连接细节: Local queue manager
。对于 Destination queue manager name ,输入 LOCAL_QM2
。 图 8. LOCAL_QM2 队列管理器的连接细节
要确认与队列的数据流引擎连接,可显示队列状态:
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 的当前队列深度和消息数据
如图 10 所示, OUTPUT.QL
队列的当前队列深度现在为 1。此值确认消息流从 LOCAL_QM1
队列管理器上的 INPUT.QL
队列拾取了消息,并将它发送到 LOCAL_QM2
队列管理器上的 OUTPUT.QL
队列。
图 10. OUTPUT.QL 的当前队列深度
通过使用 IBM Integration Toolkit, LOCAL_QM2
队列管理器上的 OUTPUT.QL
队列的当前队列深度从 0 更改为 1(图 11)。此更改确认该消息已发送。另外,消息数据是从 LOCAL_QM1
队列管理器上的 INPUT.QL
队列发出的同一条消息的数据。
图 11. OUTPUT.QL 的当前队列深度和消息数据
如果选择定义 MQ 客户端连接属性,还必须指定以下属性:
在此示例中,Integration 节点在 Windows 服务器上运行,队列管理器在 Linux 服务器上运行。
要配置 MQInput 节点属性:
INPUT.QL
队列名称: INPUT.QL
。 图 12. MQInput 节点的 Queue name 属性
IIB10_QM1
队列管理器的连接细节: MQ client Connection properties
。 IIB10_QM1
。 1025
。 IIBV10.SVRCONN
。 图 13. IIB10_QM1 的连接细节
要配置 MQOutput 节点属性:
OUTPUT.QL
队列名称: OUTPUT.QL
。 图 14. 图 14. MQOutput 节点的 Queue name 属性
IIB10_QM2
队列管理器的连接细节: MQ client connection properties
。 IIB10_QM2
。 1026
。 IIBV10.QM2.SVRCONN
。 图 15. IIB10_MQ2 的连接细节
测试消息流之前, INPUT.QL
和 OUTPUT.QL
队列的初始当前深度 ( CURDEPTH
) 为 0,这表示该队列中没有消息。要测试客户端连接:
IIB10_QM1
队列管理器的 MQSC 命令: -bash-4.1$ runmqsc IIB10_QM1
INPUT.QL
队列的当前深度: dis ql(INPUT.QL) CURDEPTH
CURDEPTH
为 0,如下面的输入队列细节所示:
AMQ40409: Display Queue details. QUEUE(INPUT.QL) TYPE(QLOCAL) CURDEPTH(0)
IIB10_QM2
队列管理器的 MQSC 命令: -bash-4.1$ runmqsc IIB10_QM2
OUTPUT.QL
队列的当前深度: dis ql(OUTPUT.QL) CURDEPTH
CURDEPTH
为 0,如下面的输出队列细节所示:
AMQ8409: Display Queue details. QUEUE(OUTPUT.QL) TYPE(QLOCAL) CURDEPTH(0)
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
IIB10_QM2
队列管理器的 MQSC 命令:
-bash-4.1$ runmqsc IIB10_QM2
您会看到以下输出:
Starting MQSC for queue manager IIB10_QM2.
OUTPUT.QL
队列的当前深度: dis ql(OUTPUT.QL) CURDEPTH
如以下输出所示, CURDEPTH
是 1,表示该消息流已成功将消息处理到输出队列:
AMQ8409: Display Queue details. QUEUE(OUTPUT.QL) TYPE(QLOCAL) CURDEPTH(1) END
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)
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)
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。
在此示例中,Integration 节点在 Windows 系统上运行,队列管理器在 Linux 系统上运行。如果选择 CCDT 选项,则必须指定一个队列管理器名称,并在 Windows 系统上配置 MQ CCDT 文件。
要配置 MQInput 节点属性:
INPUT.QL
队列名称: INPUT.QL
。 图 16. MQInput 节点的 Queue name 属性
IIB10_QM1
队列管理器的 MQ 客户端连接细节: Client channel definition table (CCDT) file
。对于 Destination queue manager name ,输入 IIB10_QM1
。 图 17. IIB10_QM1 的连接细节
要配置 MQOutput 节点属性:
OUTPUT.QL
队列名称: OUTPUT.QL
。 图 18. MQOutput 节点的 Queue name 属性
IIB10_QM2
队列管理器的连接细节: Client channel definition table (CCDT) file
。对于 Destination queue manager name ,输入 IIB10_QM2
。 图 19. IIB10_MQ2 队列管理器的连接细节
使用 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 文件的位置:
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
选择 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="
要确认与该队列的数据流引擎连接:
IIB10_QM1
队列管理器的 MQSC 命令: -bash-4.1$ runmqsc IIB10_QM1
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)
IIB10_QM2
队列管理器的 MQSC 命令: -bash-4.1$ runmqsc IIB10_QM2
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)
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)
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 文件的通道名称或位置)未正确定义,您可能会遇到图 20 中所示的错误。
图 20. 错误的 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 大会的视频回放,等等。立即注册。