【问题标题】:Route messages to different message queues in IBM MQ based on MQRFH2 and USR properties根据 MQRFH2 和 USR 属性将消息路由到 IBM MQ 中的不同消息队列
【发布时间】:2021-05-31 19:27:58
【问题描述】:

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

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

提前致谢。

【问题讨论】:

  • 您到底在寻找什么,示例代码?你的问题太笼统了。但一般情况下,您可以通过 Compute 节点中的 OutputLocalEnvironment 设置目标队列,并且可以使用简单的 IF 语句根据传入的 usr 标头设置目标队列。
  • 您还可以使用 IIB 中的 Route 节点或 RouteToLabel 节点来直观地表示消息流中的路由。但是,如果您有更多数量的队列并且您计划继续动态添加队列并且不想在将来接触 IIB 代码,那么您最好的选择是通过 Compute 节点中的 OutputLocalEnvironment 设置目标队列,正如其他评论者所解释的那样在这篇文章中。
  • 您好 Attila,感谢您的意见。关于如何在消息中放置带有 usr 标头的 IBM MQ Explorer 消息的任何想法?我能做到吗?
  • @ker shen - 你可以使用 RHutil 工具来设置标题。 github.com/ibm-messaging/mq-rfhutil
  • @ker shen - 如果我的意见对您有帮助,您可以将其标记为有用,以便对其他人有所帮助

标签: ibm-mq ibm-integration-bus


【解决方案1】:

请阅读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

【讨论】:

  • 您好 Daniel,感谢您提供代码和指点。我已尝试实现上述内容,但是当我将消息放入队列(在 MQ 输入节点中指定)且输入消息标头 Ker 值为“1”或“2”时,消息将被路由到队列中的队列ELSE 语句。我可以检查将测试消息放入我的输入队列(来自 IBM MQ)的正确语法吗?我尝试过 myMessage、myMessage、myMessage 等,但似乎无法获得预期的结果。非常感谢您提供的任何意见,TIA。
  • 用什么样的工具将MQ消息发送到输入节点?我刚刚尝试使用 IIB Toolkit Flow Exerciser,但无法设置 RFH2 标头;似乎不起作用。
  • 我在 IBM Toolkit 和 MQ Explorer 上都使用了流程练习器。两者都将我的消息路由到 ELSE 中的队列。
  • 使用 MQ Explorer 您不能设置 RFH2 标头。我会尝试其他的,然后告诉你。
  • 好的,谢谢!我只能使用 IBM MQ 和 IIB Toolkit,所以如果我可以仅使用 IBM MQ/IIB Toolkit 创建这个场景,那将非常有帮助。
猜你喜欢
  • 1970-01-01
  • 2017-10-01
  • 2013-10-20
  • 1970-01-01
  • 2018-12-28
  • 2022-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多