使用监视属性配置监视事件源

在“消息流”编辑器中,使用消息流节点属性上的“监视”选项卡添加一个或多个监视事件。

准备工作

请参阅下列主题:请确保您有一个消息流包含要将监视事件添加到的节点。 不能对子流启用监视功能。
在下列节点上,您无法使用监视属性来配置事务事件:对于这些节点,请改为使用监视概要文件,如 使用监视概要文件配置监视事件源中所述。

关于此任务

事件源是消息流中可以发出监视事件的点。 每个事件源都有一组属性,用于控制它所发出的监视事件的内容。 要创建事件,请完成下列步骤。

过程

  1. 在“消息流”编辑器中,选择相关节点以显示该节点的属性。
  2. 选择 监视 选项卡。
  3. 单击添加

    这将显示“添加事件”窗口。

  4. 事件源 字段中,选择事件的源。
    选择事件源后,事件源地址的相应值将显示为只读属性。 事件源信息用于填充事件的 wmb:eventPointData/wmb:messageFlowData/wmb:node 元素的属性。
    提示: 如果您决定使用 mqsichangeflowmonitoring 命令来启用或禁用事件,那么必须为 事件源地址指定值,而不是 事件名称
  5. 事件名称 字段中,选择 字面值数据位置

    每个监视事件都有一个存放在事件的 wmb:eventPointData/wmb:eventIdentity/@wmb:eventName 属性中的名称。 下表显示了缺省名称:

    事件源 缺省事件名称 示例
    事务启动 节点标签.事务开始 MQInput.TransactionStart
    事务结束 节点标签.事务结束 MQInput.TransactionEnd
    事务回滚 节点标签.事务回滚 MQInput.TransactionRollback
    终端 nodeLabel.terminal_label。终端 MQInput.OutTerminal
    您可以通过下列方式覆盖缺省值:
    • 通过指定替代文字串。
    • 通过指定 XPath 查询。 该查询用于从输入消息的字段中抽取事件名称。 单击编辑以使用 XPath 表达式构建器
  6. 可选: 事件过滤器 部分中,提供 XPath 表达式以控制是否发出事件。

    输入表达式(例如,$Body/StockTrade/Details/Value > 10000),或单击编辑以启动 XPath 表达式构建器。

    此表达式必须求值为 true 或 false,并且可以引用消息树中的字段或者消息组合件中的其他字段。 缺省值为 true(),这表示始终生成事件。
  7. 可选: 如果事件必须包含从消息中抽取的所选数据字段,请填写 事件有效内容 字段。

    单击添加以启动“添加数据位置”对话框。 然后,您可以输入位置(例如,$LocalEnvironment/File/Name)或者单击编辑以启动 XPath 表达式构建器。

    您可以从消息数据中抽取一个或多个字段,并将其与事件包括在一起。 这些字段可以是简单字段,也可以是复杂字段。 简单内容包含在事件的 wmb:applicationData/wmb:simpleContent 字段中;复杂数据包含在 wmb:applicationData/wmb:complexContent 字段中。

    此工具通常用于在业务事件中传递重要的业务数据。 如果事件包含输入位流,那么此工具还可以用于抽取关键字段。 然后,您可以使用另一个应用程序提供审计跟踪或重新提交失败的消息。

    有关配置包含复杂内容的监视事件的更多信息,请参阅 在监视事件的事件有效内容中包含复杂内容

  8. 可选: 如果事件必须捕获消息位流数据,请选择 在有效内容中包含位流数据
    如果选择该选项,必须提供以下信息:
    内容
    主体全部中进行选择。
    编码
    CData(未进行编码的原始文本)、HexBinarybase64Binary 中进行选择。

    选择此选项后,可能会出现如下情况:包含的位流与通过传输输出节点编写的消息不相同。 监视将序列化整个消息树,而传输输出节点将使用所识别的消息树的部分。 通过消息树中第一个消息体前出现的所有头生成包含在监视消息中的位流。 将不会包含消息体后出现的任何头。

  9. 可选: 选择 关联 选项卡以提供事件关联的详细信息。

    每个监视事件必须包含至少一个关联属性,并且最多可以包含三个关联属性。 如果您未指定任何关联信息,那么消息流中的第一个事件源将分配一个唯一标识,同一事务中后面的所有事件源都将使用该标识。

    1. 本地事务相关因子 字段中,选择下列其中一个选项。
      自动
      将使用消息流的本次调用的最新事件所使用的局部相关因子。 如果不存在局部相关因子,那么将生成新的唯一值。
      指定相关因子的位置
      输入值,或者单击编辑以启动 XPath 表达式构建器。 将从消息树中的指定位置读取局部相关因子。 请确保指定的位置包含对于消息流的本次调用而言唯一的相关因子值。
    2. 父事务相关因子 字段中,选择下列其中一个选项以从父事务中抽取关联字段。
      自动
      将使用消息流的本次调用的最新事件所使用的父相关因子。 如果不存在任何父相关因子,那么将不会使用父相关因子。
      指定相关因子的位置
      输入值,或者单击编辑以启动 XPath 表达式构建器。 将从消息树中的指定位置读取父相关因子。 请确保指定的位置包含适合于父相关因子的值。
    3. 全局事务相关因子 字段中,选择下列其中一个选项以从全局事务中抽取关联字段。
      自动
      将使用消息流的本次调用的最新事件所使用的全局相关因子。 如果不存在任何全局相关因子,那么将不会使用全局相关因子。
      指定相关因子的位置
      输入值,或者单击编辑以启动 XPath 表达式构建器。 将从消息树中的指定位置读取全局相关因子。 请确保指定的位置包含适合于全局相关因子的值。
  10. 可选: 事务 选项卡上,选择如何协调消息流发出的监视事件。 您可以选择与消息流事务进行协调、在独立的工作单元中进行协调或者不在工作单元中进行协调。
    请选择下列其中一个选项。
    消息流
    只有在消息流成功落实了其工作单元时,才发出此事件以及所有其他使用此设置的事件。

    如果将事务启动事件包括在消息流工作单元中,但消息处理失败并且此工作单元未发布,那么事务启动事件将包括在独立的工作单元中。 此行为将确保监视应用程序接收事件对(启动和回滚),而不是接收孤立的回滚事件。

    独立
    将在另一个工作单元中发出事件,这与主工作单元无关。 无论主工作单元是否成功落实,都发出此事件以及所有其他使用此设置的事件。

    只有在落实或回滚主事务后,才能启动独立事务。 如果流的 Commit count 属性大于 1,或者设置了 Commit by message group 属性,那么将在同步点之外发出针对独立事务的事件。 另外,还将发出包含此信息的消息。

    将脱离同步点(不在任何工作单元中)发出事件。 当消息通过事件源且立即可供读取时发出事件。
    并非所有这些选项都对所有事件类型可用。 下表显示了缺省值和允许的值:
    事件源 允许的值 缺省
    事务启动
    • 消息流
    • 独立
    消息流
    事务结束
    • 消息流
    消息流
    事务回滚
    • 独立
    独立
    终端
    • 消息流
    • 独立
    消息流
  11. 单击完成

    节点“属性”视图的“监视”选项卡中的事件表将根据您添加的事件的详细信息进行更新,并且将启用该事件。

  12. 保存消息流。
  13. 将所有事件添加到流时,请将消息流添加到 BAR 文件,然后部署 BAR 文件。

    针对这个流的监视功能处于不活动状态;部署 BAR 文件并不会激活监视功能。

后续操作

节点的监视属性显示为该节点定义的所有监视事件。 您可以编辑节点的监视属性以执行下列任务:
  • 启用或禁用监视事件。
  • 添加、删除或更改节点的监视事件。