根据 MQRFH2 和 USR 属性将消息路由到 IBM MQ 中的不同消息队列

问题描述

如果有人能够协助/提供某种使用 IBM IIB(集成工具包)和 IBM MQ 的指南/教程,利用 MQ 输入节点、计算节点和 MQ 输出节点,我们将不胜感激,这样当消息放在输入队列上,它将根据计算节点(Esql 文件)中设置/定义的 MQRFH2 标头和 USR 属性路由到输出队列

例如如果 MQRFH2/USR = 1,则将消息路由到队列 1,如果 MQRFH2/USR = 2,则将消息路由到队列 2,以此类推

提前致谢。

解决方法

请阅读Accessing the MQRFH2 headerPopulating Destination in the local environment tree

然后您可以像这样编写您的 ESQL:(假设 RFH2 路由变量名为 Ker

CREATE COMPUTE MODULE Routing_Compute
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
        SET OutputLocalEnvironment.Destination.MQ.DestinationData[1].queueName =
            CASE InputRoot.MQRFH2.usr.Ker
                WHEN '1' THEN 'Q1'
                WHEN '2' THEN 'Q2'
                ELSE 'Q3'
            END;
        RETURN TRUE;
    END;
END MODULE;

记得像这样更改默认节点配置:

  • 计算:将 Compute mode 设置为 LocalEnvironment
  • MQ 输出:将 Destination mode 设置为 Destination List

示例:如果输入消息头 Ker 的值为 2,那么它将被路由到队列 Q2