“MQ 获取消息”活动

使用 MQ 获取消息活动可以在运行时期间从 MQ 队列中检索消息。

注: 在配置该活动之前,您必须已经为 MQ 活动创建端点
配置任务包含三个部分:

完成配置任务后,针对活动进行映射输入映射输出

注: 最大消息大小为 100 MB。

队列和消息详细信息

使用下表中的字段指定队列和消息详细信息。 必填字段以星号标记。
字段 描述
队列名称 * 指定 MQ 队列(Integration Appliance 尝试从中检索消息)的名称。
超时 MQ 获取消息活动请求从队列中检索消息和返回消息之间发生超时情况前的秒数。如果此超时已到期,并且未从队列返回任何消息,那么 Integration Appliance 将等待指定的重试时间,然后将再次尝试检索消息。 有关超时和重试选项的详细信息,请参阅超时和重试选项

要指定 Integration Appliance 在发出超时之前应等待的秒数,请选择之后选项,然后在秒数字段中输入秒数。 缺省情况下,将选择从不选项,此选项指定 Integration Appliance 在从队列中检索到消息之前会无限期地等待,即没有超时期。

有效内容数据类型 指定消息有效内容的数据类型:二进制字符串
MQRFH2 头的模式片段 指定 MQRFH2 头是否包含在消息中。 如果消息包含 MQRFH2 头,那么请选中此复选框并单击 [...]。在浏览至模式类型元素对话框中,找到用于定义头的 XML 模式,在该 XML 模式中选择 NameValueData 元素,然后单击确定。模式片段为 NameValueData 元素及其所有子元素。
注: 必须首先创建用于定义头的 XML 模式,并将其装入到项目中,然后才能选择该 XML 模式。有关更多信息,请参阅为 MQRFH2 头定义和装入 XML 模式

交付规则

字段 描述
交付消息 此处可用的选项取决于是否选中了唯一标识复选框。如果已选中,那么所有这三个选项均可用。如果未选中,那么只会显示至少一次
  • 至少一次 - 指定至少交付消息一次,但是可能会多次交付。连接或 Integration Appliance 故障可能会导致多次检索和处理消息。此交付选项通常在接收系统可以检测到或允许重复消息时使用。
  • 至多一次 - 指定仅交付消息一次或根本不交付消息。连接或 Integration Appliance 故障可能会导致丢失消息。此交付选项通常在接收系统不允许重复消息但是允许丢失消息时使用。
  • 仅一次 - 指定交付消息一次且仅一次。连接或 Integration Appliance 故障不会影响通过此选项进行的交付。Integration Appliance 使用 MQ 消息标识来确保消息仅检索和处理一次。
    注: 如果选择仅一次选项,那么必须启用持久性。有关更多信息,请参阅启用持久性
其中消息具有唯一标识 指定队列中的消息是否具有唯一标识。

重试选项

配置用于从 MQ 队列中获取消息的重试选项,如下表中所述:

重试选项 描述
1) 在两次重试之间等待 ___ 秒。 Integration Appliance 在尝试从队列中检索消息之前要等待的秒数。要进一步了解此选项与配置窗格中的超时字段或者 timeout 输入参数之间的关系,请参阅超时和重试选项
2) 在尝试连接 ___ 次后失败。 指定 Integration Appliance 在发出错误并停止处理当前编排作业之前尝试从队列中检索消息的最大次数。

如果部署了包含 MQ 获取消息活动的编排,而且 Integration Appliance 无法连接指定的 MQ 服务器或无法从队列中获取消息,那么 Integration Appliance 会将错误以警告的形式记录在系统和编排日志中,直至达到重试计数值。当达到重试计数时,Integration Appliance 会在系统和编排日志中记录错误,并且停止处理当前编排作业。

例如,将重试计数设置为 3。第一个、第二个和第三个连接错误在系统日志中显示为“警告”。Integration Appliance 将以错误形式记录第四个错误,并停止处理当前编排作业。

要进一步了解此选项与配置窗格中的超时字段或者 timeout 输入参数之间的关系,请参阅“超时”和“重试”选项。

映射输入

  1. 核对表中选择映射输入任务。这样会打开重试面板。

    活动的输入参数会显示在至活动窗格中。

  2. MQ 获取消息活动的所有输入参数均为可选。如果下表所列输入参数未显示在映射输入面板的至活动窗格中,那么请从工具栏菜单中选择映射 > 显示可选参数,或在至活动面板中右键单击并选择显示可选参数选项。如果无法在工具栏菜单中选择映射 > 显示可选参数选项,那么请单击映射输入面板中的节点以激活此选项。
    您可以限制由 MQ 获取消息活动返回的消息类型,方法是映射 mqmdheader 可选输入参数的以下节点的任意组合:
    • mqmdheader/MsgId
    • mqmdheader/CorreId
    • mqmdheader/GroupId
    • mqmdheader/MsgSeqNumber

    在运行时,该活动会对队列中的消息依次进行迭代。如果未将任何内容映射到这些节点,那么将不会限制任何内容,从而返回队列中的第一条消息将由 MQ 获取消息活动返回,并且编排中的下一个活动将得到处理。

    如果所有这些节点都已映射,那么 MQ 获取消息活动会在运行时期间迭代队列中的每条消息,直至找到与所有已映射节点的运行时值匹配的第一条消息。第一条匹配消息将由 MQ 获取消息活动返回,并且编排中的下一个活动将得到处理。

    例如,在映射输入任务中,mqmdheader/MsgId 将映射到名为 msgId 的字符串,并将为 mqmdheader/GroupId 指定缺省值 largeOrders,如下图中所示:
    在运行时,MQ 获取消息活动返回队列中第一个同时满足以下两个条件的消息:
    • 为名为 msgId 的字符串变量指定的运行时值等于队列中消息的消息标识。
    • 消息的组标识等于 largeOrders。

    您也可以选择使用下表所定义的输入参数来覆盖自己在运行时期间在核对表配置任务中动态指定的队列名称超时设置。

    例如,可以在配置任务中将 MQ 队列名称设置为 poqueue。在运行时,可以使用 queuename 输入参数将 MQ 队列名称 newqueue 传递到此活动中。在运行时期间动态指定的队列名称会覆盖配置面板所指定的原始设置。 在此示例中,Integration Appliance 将查看名为 newqueue 的 MQ 队列中的消息。

    用于覆盖配置任务中的设置的可选输入参数
    输入参数名称/节点 描述 是否覆盖任务中的设置?
    timeout 指定 Integration Appliance 在请求从队列检索消息之后直到重试之前等待的时间量。

    指定负数可指定无超时期 - Integration Appliance 在从队列中检索到消息之前无限期等待。指定负数等同于在配置任务中指定从不选项。

    timeout 输入参数会覆盖配置任务的超时字段。
    queuename 指定 MQ 队列的名称(Integration Appliance 将在该队列中查找消息)。 queuename 输入参数会覆盖在配置任务的队列名称字段中指定的编码。

    请参阅创建映射以获取有关映射的一般指示信息。

映射输出

您不需要为此活动映射输出参数。请参阅创建映射以获取有关映射的一般指示信息。

超时和重试选项

配置任务的超时字段或 timeout 输入参数中指定的超时可以指定在 MQ 获取消息活动请求从队列中检索消息和返回消息之间发生超时情况前的秒数。如果此超时已到期,并且未从队列中返回任何消息,那么 Integration Appliance 将等待在 1) 在两次重试之间等待 ___ 秒选项中指定的时间量,然后再次尝试检索消息。Integration Appliance 会不断尝试获取消息直至达到指定的重试计数。 重试计数通过 2) 在尝试连接 ___ 次后将失败来指定。1) 在两次重试之间等待 ___ 秒2) 在尝试连接 ___ 次后将失败选项在重试选项任务中指定。

例如,MQ 获取消息活动配置了以下选项:
  • 配置任务中的超时字段设置为 10,可选的 timeout 输入参数未映射,并且未定义任何缺省值。
  • 1) 在两次重试之间等待 ___ 秒选项设置为 15 秒。
  • 2) 在尝试连接 ___ 次后将失败选项设置为 2。
在运行时,如果 MQ 获取消息活动持续地无法从队列中检索到消息,如下图中所示: