咖啡馆

有空坐下来喝杯咖啡,放松下心情~
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

如何在AS/400 Websphere MQ上配置消息触发器

Posted on 2008-02-13 22:20  mshwu  阅读(1688)  评论(0编辑  收藏  举报
内容提要: 在AS/400 上如何配置MQSeries队列管理器的消息触发器,使消息到达队列时可以触发启动AS/400应用程序访问后台数据并把结果返回给请求方。

正文 

第一步,编译生成一个应用程序,执行从队列中读取消息(MQGET),访问数据库中的表或其他处理,然后把返回结果组织成消息交给队列管理器传送返回(MQPUT)。例如用WRKOBJPDM生成程序MQPGM/TPGM。

第二步,创建输入队列并定义触发条件,输入队列即前台客户或请求服务的应用程序发送的请求消息到达的地方。
CRTMQMQ /* 创建队列命令 */
QNAME(MQ.MQTEST) /* 队列名 */
QTYPE(*LCL) /* 队列类型是本地队列 */
TEXT(‘QUEUE TRIGGER’) /* 说明文字 */
PRCNAME(PROCNAME) /* 触发处理过程名 */
TRGENBL(*YES) /* 置为可触发队列 */
TRGTYPE(*FIRST) /* 放入第一条消息触发程序 */
INITQNAME(SYSTEM.SAMPLE.TRIGGER) /* 初始化队列 */
当队列MQ.MQTEST中的消息个数由0变为1,即第一条消息放入时,队列管理器生成一条触发消息,放入初始化
队列中。

第三步,创建处理过程(PROCESS),指定触发条件满足时被启动的应用程序

CRTMQMPRC /* 创建处理过程命令 */
PRCNAME(PROCNAME) /* 处理过程名 */
TEXT(‘calls MQPGM/TPGM’) /* 说明文字 */
APPID(‘MQPGM/TPGM’) /* 应用程序文件名 */
处理过程名要与第二步中指定的处理过程名相同,应用程序名要与第一步中生成的应用程序相同。 第四步,启动
触发器监控程序,监控初始化队列,当初始化队列中有触发消息放入时,触发器监控程序启动由PRCNAME属性指定的处理过程相应的应用程序,Websphere MQSeries for AS/400提供两个触发器监控程序AMQSERV4和AMQSTRG4
,它们的区别是AMQSERV4调用触发消息指定的应用程序,所以处理程序只能串行地执行,AMQSTRG4则为每一条触
发消息启动一个新的作业来执行处理过程的应用程序,所以能并行地执行,但要注意的是AMQSTRG4把作业放入QBATCH队列。触发器监控程序要求一个参数:初始化队列名。启动触发器监控程序的方式有两种,第一种是启动程序。
如:CALL PGM(AMQSERV4) PARM(‘SYSTEM.SAMPLE.TRIGGER ’)启动后会独占一个屏幕,测试时可以用这种方法观测到触发器的活动过程,检查消息触发的过程。用这种方式启动的触发器监控程序不会停止下来,除非把初始化队列的可读属性置为不可读。

以C语言为例,一个MQ应用的开发流程如下:

MQCONN()  /*建立与队列管理器的连接*/
            MQOPEN() /*打开要进行读写操作的队列*/
            MQPUT() /*将消息放入队列*/
            MQGET() /*从队列中读取消息*/
            MQINQ() /*查询队列的属性*/
            MQSET() /*设置队列的属性*/
            MQCLOSE() /*在读写等操作进行完之后,将队列关闭*/
            MQDISC() /*断开与队列管理器的连接,释放相关的资源*/