【转】MQ 与传统 CICS 应用的连接

转自:http://hi.baidu.com/cooltown/blog/item/810f628210caa0aa0cf4d2a5.html

在使用 IBM 主机的大型企业里,一般采用 CICS 作为联机交易支持系统,经过长年 IT 的发展,CICS 系统里积累了大量的企业核心业务应用,MQ 作为应用集成的重要工具,是否能够方便灵活地与 CICS 中的程序进行连接,是个重要问题。

在主机上,MQ 与 CICS 有很好的应用集成,可以方便地从 CICS 中使用 MQ 资源,也可以容易地从 MQ 中调起 CICS 程序进行业务处理。MQ 提供两种主要的方式与 CICS 连接方式,一种称作 CICS adapter,通过 CICS adapter 的功能,CICS 应用程序可以访问 MQ 队列里的数据;另一种称作 CICS bridge,通过 CICS bridge 的功能,向某个 MQ 队列发送包含 COMMAREA 的消息,从而自动触发起 CICS 中处理程序运行,并自动把 CICS 程序返回的 COMMAREA 写到返回队列里去,这个 CICS 程序不必为 MQ 调用做任何改变。

CICS adapter

CICS adapter 把 CICS 与某个 MQ 队列管理器相连,使得 CICS 程序可以通过标准的 MQI应用接口访问 MQ 资源,CICS adapter 本身包括:

  • 一组控制功能,用来管理 MQ 与 CICS 的连接。
  • MQI stub 一组函数库,通过他们,CICS 程序可以调用 MQ 资源。


图 1 CICS adapter 程序框架

上面图 1 中的例子给出了一个使用 CICS adapter 程序的例子。它可以通过MQGET()、MQPUT() 等 MQI 调用接口来访问 MQ 资源。MQ 还会在 CICS 中安装一些交易程序,CKQC 交易用来管理 CICS/MQ 的连接和对 CICS adapter 自身进行管理。CKTI 交易是任务初始化程序,它用来监控 MQ 触发信息,如果某个 MQ 队列上定义的触发程序是 CICS 程序,触发条件符合时将由 CKTI 初始化运行 CICS 程序。

实际中,CICS adapter 的主要用法一般有两种,一种是由 CICS 程序主动发起,它读取队列信息进行处理,或者向某个队列发送响应/通知信息,比如 CICS 中的取款程序可以把帐户取款事件写入 MQ 队列,通过 MQ 传递到其它系统进行处理;另一种是 MQ 应用主动发起,向某个输入队列放入消息,这个队列上定义了触发器,指定将被触发的是某个 CICS 程序,当 MQ 的触发监控程序 CKTI 发现有消息到达,它会自动启动相应的 CICS 程序,这个 CICS 程序自己到队列里读取数据进行处理,最后把返回数据写到返回队列里去。

CICS bridge

WebSphere MQ-CICS bridge 提供了一种方便的手段,使 MQ 应用可以调用 CICS 程序并传递参数,这个 CICS 程序可以是现有的使用 COMMAREA 传递参数的任何程序,它里面不必做任何 MQ 调用。使用 MQ-CICS bridge 可以很容易地把现有的 CICS 传统 DPL 应用程序提供给 MQ 应用程序调用,不必对现有程序做任何改写和重新编译。对于传统的面向 3270 终端的 CICS 程序,也可以通过 3270 bridge 格式进行调用,而不必对应用进行修改。


图 2 CICS bridge 结构

如上图 2 所示,使用 MQ-CICS bridge 时要定义一个输入队列和一个输出队列,并对 MQ-CICS bridge 进行配置。MQ 应用程序向输入队列中放入一个包含需要传递给被调用的 CICS 程序的 COMMAREA 数据的消息,MQ 提供的 Bridge Monitor 程序会监控到有新消息到达,它会 START 一个 MQ 提供的 Bridge Task 处理程序,这个程序从队列中读取消息,取得应用所需的 COMMAREA,然后使用 LINK 命令去调用指定的 CICS 业务程序,这个业务程序处理完毕后,在 COMMAREA 里返回结果数据,Bridge Task 处理程序会把含有返回 COMMAREA 的消息写入返回队列,最后 MQ 应用从返回队列中取走数据进行显示或进一步处理。在这个过程中,对 MQ 应用来看,它把包含输入 COMMAREA 的数据写到一个队列,就可以到另一个队列去读取包含返回 COMMAREA 的结果数据;对 CICS 业务应用程序而言,它是从 COMMAREA 接收数据,从 COMMAREA 返回数据,与平常的运行一样,到底是被其他业务应用程序调用的还是被 MQ-CICS bridge 调用的,对它没有分别。

通过 MQ-CICS bridge 调用 CICS 程序,不但可以实现单个 CICS 程序的调用,还可以实现一次调用多个 CICS 程序,一次传递一个 COMMAREA 进入,一次得到多个 COMMAREA 的返回。

使用 MQ-CICS bridge 可以很方便地把现有 CICS 程序公布在网络上对外服务,而不必对CICS 程序进行任何修改。MQ-CICS bridge 为企业应用提供了一种快速方便的 MQ CICS 连接。

其他相关信息:

http://hi.baidu.com/cooltown/blog/item/2b331338524c992cb8998fa4.html 第 1 部分: 异步通信与负载均衡

http://hi.baidu.com/cooltown/blog/item/810f628210caa0aa0cf4d2a5.html 第 2 部分: MQ 的安全性、应用的连接、实现 SOA 服务以及系统监控

http://hi.baidu.com/cooltown/blog/item/66abcd034aefd97f3912bbc2.html 第 3 部分: 企业级应用设计构架

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章