![[z/OS]](ngzos.gif)
z/OS 上的 "批处理异步使用" 样本
CSQ4BCS1 样本程序以 C 形式交付,它演示使用 MQCB 和 MQCTL 异步消耗来自多个队列的消息。
Asynchronous Consumption 样本在批处理环境中运行。 请参阅 其他样本 以了解批处理应用程序。
还有一个在 CICS® 环境中运行的 COBOL 示例,请参见 z/OS 上的 CICS 异步消费和发布/订阅示例。
应用程序使用以下 MQI 调用:
- MQCONN
- MQOPEN
- MQCLOSE
- MQDISC
- MQCB
- MQCTL
本主题还提供有关以下标题的信息:
运行 CSQ4BCS1 样本
此样本程序遵循以下语法:
存在用于运行此程序的样本 JCL,它驻留在 CSQ4BCSC 中。
Batch Asynchronous Consumption 样本程序的设计
样本显示如何按照消息的到达顺序读取来自多个队列的消息。 这将要求更多的代码使用同步 MQGET。 通过异步使用,无需轮询, IBM® MQ将执行线程和存储管理。 在样本程序中,错误写入到控制台。
样本代码具有以下步骤:
- 定义单个消息消耗回调函数。
void MessageConsumer(MQHCONN hConn, MQMD * pMsgDesc, MQGMO * pGetMsgOpts, MQBYTE * Buffer, MQCBC * pContext) { ... } - 连接到队列管理器。
MQCONN(QMName,&Hcon,&CompCode,&CReason); - 打开输入队列,并将各队列与
MessageConsumer回调函数相关联。MQOPEN(Hcon,&od,O_options,&Hobj,&OpenCode,&Reason); cbd.CallbackFunction = MessageConsumer; MQCB(Hcon,MQOP_REGISTER,&cbd,Hobj,&md,&gmo,&CompCode,&Reason);无需为各队列设置
cbd.CallbackFunction;它是只输入字段。 可以将其他回调函数与各队列相关联。 - 启动消息的消耗。
MQCTL(Hcon,MQOP_START,&ctlo,&CompCode,&Reason); - 等待用户按 Enter 键,然后停止消息的消耗。
MQCTL(Hcon,MQOP_STOP,&ctlo,&CompCode,&Reason); - 最后,与队列管理器断开连接。
MQDISC(&Hcon,&CompCode,&Reason);
