IBM MQ

使用 IBM® App Connect Enterprise 工具包来配置由 IBM、 App Connect Professional 和 MQ 活动转换而来的消息流节点。

关于此任务

导入包含 MQ 活动的协调时,转换实用程序会创建一个包含 MQInputMQGetMQOutput 节点的消息流。 有关每项活动使用哪些节点的信息,请参见表 1

表 1. IBM App Connect Professional IBM MQ 活动及相应的 IBM App Connect Enterprise 消息流节点
IBM App Connect Professional 活动 IBM App Connect Enterprise 节点
Get message

MQInput 节点

Put message

MQOutput 节点

Poll message

MQGet 节点

IBM、 App Connect ProfessionalIBM App Connect Enterprise 之间的区别
  • IBM App Connect Professional 中,默认连接为远程连接,无需选择连接类型。 不过,在 IBM App Connect Enterprise 中,您必须将连接类型指定为“本地”、“ IBM MQ 客户端(远程)”或“CCDT文件”。
  • IBM App Connect Professional 中,对于 IBM MQ 连接, 用户名字段是必填的。 而在 IBM App Connect Enterprise 中,提供凭据是可选的。

连接 IBM MQ

关于此任务

要连接到 IBM MQ ,您可以采用以下两种主要方法:
  1. IBM MQ 连接
  2. 策略项目

IBM MQ 连接

过程

  1. 选择 IBM MQ 节点( MQInput 节点、 MQGet 节点或 MQOutput 节点)。
  2. 转到 IBM MQ 的“连接”选项卡,然后选择“连接属性”。 从下拉列表中选择连接。
    用于指定 MQ 连接属性的接口。 MQ 客户端连接属性在下拉列表中突出显示
    1. 提供 destination queue manager name, queue manager host name, listener port number, 和 channel name
      用于指定 MQ 输入节点属性并填写输入框的界面
    对于 IBM MQ 连接,安全标识并非强制要求,即使不指定安全标识,这些连接也能正常工作。 如果您想提供,请按照以下步骤操作。

IBM App Connect Enterprise 中为 IBM MQ 连接创建安全标识(DSN)

过程

  1. 打开 IBM App Connect Enterprise 控制台或命令提示符:
    1. 请前往安装了 IBM App Connect Enterprise 的服务器或工作站。
    2. 在运行 IBM App Connect Enterprise 实例的服务器上打开控制台。
  2. 定义安全标识 (DSN):
    1. IBM App Connect Enterprise 控制台中运行该 mqsisetdbparms 命令,为您的 WebSphere MQ 连接创建一个安全标识。
      语法如下
      mqsisetdbparms --work-dir <workDir> -n mq::<securityId> -u <userName> -p <password>

      示例

      mqsisetdbparms --work-dir C:\ACE12NODEWS\TEST_SERVER -n mq::mqdsn -u <MQ_Username> -p <MQ_Password>
      编辑命令,替换以下项目:
      • <workDir> 集成服务器的工作目录。 例如,C:\ACE12NODEWS\TEST_SERVER
      • <securityId> 的唯一名称。 例如,mqdsn
      • <MQ_Username> 使用用户名 IBM MQ
      • <MQ_Password> 并输入密码 IBM MQ

      成功运行该命令后,请在 IBM App Connect Enterprise 中重启集成服务器以应用更改。

      右键单击工具包中的集成服务器(例如 TEST_SERVER )并选择重新启动

      显示带有与 TEST_SERVER 交互选项的上下文窗口的界面

IBM MQ 政策项目

关于此任务

IBM MQ 策略项目用于配置和管理消息流的 IBM MQ 连接。 您可以轻松维护、重复使用和更新连接详情,而无需修改代码或重新部署应用程序。

按照以下步骤创建策略项目:

过程

  1. 转到文件新建 → 选择策略项目。
  2. 命名该文件。
    例如,MQPOLICY
  3. 右键单击项目,选择新建策略
  4. 选择类型和模板为 MQEndpoint
  5. 从下拉菜单中选择连接
    用于指定 MQ 政策项目连接的接口。 下拉列表中突出显示 CLIENT

示例

配置属性示例截图 连接值:CLIENT 已突出显示
部署政策项目:
  • 创建后保存策略项目。
  • 在部署主项目之前,将其部署到集成服务器。
注:
  • 策略中设置的属性将覆盖“ IBM MQ ”的“连接”选项卡中设置的相应属性。
  • 如果未指定策略 MQEndpoint ,则使用在 IBM MQ 的“连接”选项卡中设置的属性值。
  • 指定策略项目和策略的名称,格式为 {policyProjectName}:PolicyName

示例:政策属性示例截图

用于 Get、Put 和 Poll 消息活动的 MQInputMQGetMQOutput 节点。

关于此任务

IBM App Connect Enterprise 中,从 Get messageIBM MQ 队列中检索消息的操作可通过 MQGet 节点实现。 该 Put message 操作(即处理检索到的消息并将其写入另一个 IBM MQ 队列)可通过 MQOutput 节点实现。 Poll message 活动可通过 MQInput 节点实现,该活动可在信息到达队列时立即对其进行处理。

信息流示例如下

MQInput 节点 → MQGet 节点 → MQOutput 节点

过程

  1. 请提供 IBM MQ 的连接信息:
    1. 使用所需的 IBM MQ 连接详细信息配置 MQInput 节点和 MQOutput 节点,例如:
      MQ 已指定属性的连接示例截图
  2. 配置 MQInput 节点:
    1. MQInput 节点中,指定信息流接收信息的队列名称。 当信息到达队列时,它会立即进行处理。
    例如 MyQueue队列名称示例截图
  3. 配置 MQGet 节点:
    1. MQGet 节点中,指定该节点从中检索报文的队列名称。
      例如 MQGetQueue队列名称示例截图
  4. 配置 MQOutput 节点:
    1. MQOutput 节点中,指定发送输出信息的目标队列。
      例如 local队列名称示例截图
  5. 部署并运行流程:
    1. 在您的 IBM App Connect Enterprise 环境中部署已配置的消息流。
    2. 启动流程,使其活跃起来。
  6. 使用 IBM MQ Explorer 测试流程:
    1. 打开 IBM MQ Explorer ,并将一条测试消息放入输入队列( MyQueue )。
    消息流处理消息时,首先经过 MQInput 节点、 MQGet 节点,然后经过 MQOutput 节点,将消息发送到输出队列(本地)。
  7. IBM MQ Explorer中验证该消息:
    1. IBM MQ Explorer中 ,浏览输出队列(本地)以确认消息已成功传输。
    2. 检查输入报文是否已正确处理并传送到目标队列。

示例

  • 输入队列名称: MyQueue
  • 输出队列名称:本地

从前一个节点中检索数据,以便在 IBM MQ 节点中使用

关于此任务

IBM App Connect Professional 中,通过 在 中使用 Map Inputs 和 来访问前一个节点的数据,而在 IBM App Connect EnterpriseMap OutputsChecklist,则使用 Compute 节点来访问前一个节点的数据。

输入的 JSON 格式如下

{

    "Name": "John",

    "Age": 30

}

计算节点代码如下:

CREATE COMPUTE MODULE MQMsgFlow_Compute

CREATE FUNCTION Main() RETURNS BOOLEAN

BEGIN

    -- Declare variables

    DECLARE inputJson CHARACTER;

    DECLARE name CHARACTER;

    DECLARE age INTEGER;

    -- Initialize the output tree

    SET OutputRoot = NULL;

    -- Copy the MQMD header from InputRoot to OutputRoot

    SET OutputRoot.MQMD = InputRoot.MQMD;

    SET OutputRoot.MQMD.Format = 'MQSTR';

    -- Parse the JSON data from InputRoot

    SET inputJson = CAST(InputRoot.JSON.Data AS CHARACTER);


    -- Extract fields from JSON

    SET name = InputRoot.JSON.Data.Name;

    SET age = InputRoot.JSON.Data.Age;

    -- Build the XML structure in the XMLNSC domain

    SET OutputRoot.XMLNSC.Message.Person.Name = name;

    SET OutputRoot.XMLNSC.Message.Person.Age = age;

    RETURN TRUE;

END;

END MODULE;

输出的 XML 看起来是这样的

<Message>

    <Person>

        <Name>John</Name>

        <Age>30</Age>

    </Person>

</Message>

IBM MQ 资源管理器结果:MQ Explorer 结果截图。 输出 XML 已突出显示

IBM MQ 中配置消息详细信息

关于此任务

IBM App Connect Professional 中,您可以直接在检查表 → 配置 → 信息详情下配置 Payload Data TypeMessage Type 属性。 不过,在 IBM App Connect Enterprise 中,可以通过使用 “计算” 节点来设置这些属性。

可以通过编辑以下项目配置有效载荷数据类型:

Binary - 将 MQMD.Format 设置为""(空格或 8 个空格)

String - 将 MQMD.Format 设为 MQSTR

Message Type:

Datagram - MQMD.MsgType = MQMT_DATAGRAM;

示例

信息类型值及其含义表

计算节点代码如下:

CREATE COMPUTE MODULE mqflowsample_Compute

CREATE FUNCTION Main() RETURNS BOOLEAN

BEGIN

    -- Pass input message to the output

    SET OutputRoot = InputRoot;

    -- Ensure the MQMD header exists

    IF OutputRoot.MQMD IS NULL THEN

        CREATE FIELD OutputRoot.MQMD;

    END IF;

    -- Set MQMD.Format to Binary

    SET OutputRoot.MQMD.Format = '        '; --or empty

    -- Set MQMD.MsgType to Datagram

    SET OutputRoot.MQMD.MsgType = MQMT_DATAGRAM;

    RETURN TRUE;

END;

END MODULE;

在流程练习器中,您可以查看 MQMD 属性,包括 FormatMsgType显示 MQMD 属性表的截图。 MsgType, INTEGER, 8 已突出显示。