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

Ibm mq 根据MQRFH2和USR属性将消息路由到IBM MQ中的不同消息队列,ibm-mq,ibm-integration-bus,Ibm Mq,Ibm Integration Bus,如果有人能够帮助/提供使用IBM IIB(集成工具包)和IBM MQ的指南/教程,利用MQ输入节点、计算节点和MQ输出节点,以便在将消息放入输入队列时,它将根据在计算节点(ESQL文件)中设置/定义的MQRFH2头和USR属性路由到输出队列 例如,如果MQRFH2/USR=1,则将消息路由到队列1,如果MQRFH2/USR=2,则将消息路由到队列2,等等 提前谢谢。请阅读并确认 然后您可以这样编写ESQL:(假设RFH2路由变量名为Ker) 请记住更改默认节点配置,如下所示: 计算:将Comp

如果有人能够帮助/提供使用IBM IIB(集成工具包)和IBM MQ的指南/教程,利用MQ输入节点、计算节点和MQ输出节点,以便在将消息放入输入队列时,它将根据在计算节点(ESQL文件)中设置/定义的MQRFH2头和USR属性路由到输出队列

例如,如果MQRFH2/USR=1,则将消息路由到队列1,如果MQRFH2/USR=2,则将消息路由到队列2,等等

提前谢谢。

请阅读并确认

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

请记住更改默认节点配置,如下所示:

  • 计算:将
    Compute模式设置为
    LocalEnvironment
  • MQ输出:将
    目标模式设置为
    目标列表

示例:如果输入消息头
Ker
具有值
2
,则它将被路由到队列
Q2

您到底在寻找什么,示例代码?你的问题太笼统了。但通常,您可以通过计算节点中的OutputLocalEnvironment设置目标队列,并且可以使用简单的IF语句根据传入的usr头设置目标队列。您还可以使用IIB中的Route node或RouteToLabel节点在消息流中直观地表示路由。但是,如果您有更多的队列,并且您计划继续动态添加队列,并且将来不想接触IIB代码,那么您最好的选择是通过计算节点中的OutputLocalEnvironment设置目标队列,正如本文中其他评论者所解释的。嗨,Attila,谢谢您的输入。关于如何将IBM MQ Explorer中带有usr头的消息放入消息中,您有什么想法吗?我能做到吗?@kershen-你可以使用RHutil工具设置标题@ker shen-如果我的输入有助于您将其标记为有用,从而帮助他人Shi Daniel,感谢您提供的代码和指针。我已尝试实现上述功能,但当我将输入消息头Ker值为“1”或“2”的消息放入队列(如MQ输入节点中指定的)时,消息将被路由到ELSE语句中的队列。我可以检查将测试消息放入输入队列(来自IBM MQ)的正确语法吗?我尝试了myMessage、myMessage、myMessage等,但似乎没有达到预期效果。非常感谢您的输入,TIA。您使用什么样的工具将MQ消息发送到输入节点?我刚刚尝试使用IIB工具包流练习器,但我无法设置RFH2头;似乎不起作用。我正在IBM Toolkit和MQ Explorer上使用流练习器。两者都将我的消息路由到ELSE中的队列。使用MQ资源管理器,您无法设置RFH2头。我会试试别的,然后告诉你。好的,谢谢!我只能使用IBM MQ和IIB Toolkit,因此如果我可以仅通过使用IBM MQ/IIB Toolkit创建此场景,这将非常有用。
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;