确定使用哪个节点

开始之前:

阅读有关消息流节点的概念主题。

WebSphere Message Broker 包含许多您可在消息流中使用的消息处理节点。它还提供一个界面,您可使用该界面定义自己的节点,称为用户定义的节点。

您决定使用哪些节点取决于要在消息上执行的处理。 可认为内置节点属于多个类别,并在工作台中分组显示在这些类别中(尽管此分组对它们的操作没有影响)。您也可以使用相同的方法分类用户定义的节点。类别为

输入和输出
输入和输出节点定义消息流中的点,客户机将消息(MQInput 等输入节点)发送到这些点以及从这些点接收消息(MQOutput 等输出节点)。客户机应用程序通过将消息放入 I/O 资源或从资源获取消息来与这些节点进行交互,该 I/O 资源由节点指定为消息的源或目标。虽然消息流必须至少包含一个输入节点,但它无须包含输出节点。
  • 如果要创建一个要部署到代理的消息流,必须至少包含一个输入节点以用于接收消息。 所选的输入节点取决于输入消息的源以及您想在流的哪里接收消息:
    MQInput
    如果消息到达 WebSphere MQ 队列上的代理,且该节点将位于消息流的开始部分。

    更新开始不推荐在 WebSphere Message Broker V6.0 中使用包含 MQeInput 节点的消息流。重新设计消息流,除去 MQe 节点并替换成 MQ 节点,这些 MQ 节点已根据您自己的规范进行配置,并与 MQe 网关配置一致。有关更多详细信息,请参阅迁移包含 WebSphere MQ Everyplace 节点的消息流更新结束

    MQGet
    如果消息到达 WebSphere MQ 队列上的代理,且该节点不会位于消息流的开始部分。
    SCADAInput
    如果消息是由遥测设备发送的。
    HTTPInput
    如果消息是由 Web Service 客户机发送的。
    Real-timeInput 或 Real-timeOptimizedFlow
    更新开始如果消息是由 JMS 或多点广播应用程序发送的。Real-timeInput 节点是输入节点,Real-timeOptimizedFlow 节点是完整的消息流,提供高性能的发布/预订消息流。更新结束
    更新开始JMSInput更新结束
    更新开始如果消息由 JMS 应用程序发送。更新结束
    用户定义的输入节点
    如果消息源是使用不同协议或传输的客户机或应用程序。
    Input 节点
    如果您正在创建一个要嵌入另一个消息流(子流)的消息流,且被嵌入的消息流不会部署为独立的消息流,您必须至少包含一个 Input 节点以将消息接收到子流中。

    Input 节点的一个实例表示一个 in 终端。例如,如果您 已经包含了 Input 节点的一个实例,“子流”图标显示一个 in 终端,您可以用与连接任何其他节点的相同方法将该终端连接到主流中的其他节点。

    您只能部署至少有一个输入节点的消息流。如果您的消息流不包含输入节点,则会阻止您将消息流添加到代理归档文件。输入节点可在主消息流中,或在嵌入在主消息流中的消息流中。

    您可以在一个消息流中使用多个输入节点。有关更多信息,请参阅使用多个输入节点

  • 如果您要将消息流产生的消息发送到目标应用程序,则可以包含一个或多个输出节点。所选的输出节点取决于目标应用程序想要接收这些消息所经过的传输:
    Publication
    如果您要为通过所有受支持协议预订代理的应用程序使用发布/预订网络分发消息。Publication 节点是使用由订户标识的输出目的地的输出节点,这些订户的预订与当前消息的特征相匹配。
    MQOutput
    如果目标应用程序想要在 WebSphere MQ 队列或输入消息 MQMD 中指定的 WebSphere MQ 应答队列上接收消息。

    更新开始不推荐在 WebSphere Message Broker V6.0 中使用包含 MQeOutput 节点的消息流。重新设计消息流,除去 MQe 节点并替换成 MQ 节点,这些 MQ 节点已根据您自己的规范进行配置,并与 MQe 网关配置一致。有关更多详细信息,请参阅迁移包含 WebSphere MQ Everyplace 节点的消息流更新结束

    MQReply
    如果目标应用程序想要在输入消息 MQMD 中指定的 WebSphere MQ 应答队列上接收消息。
    SCADAOutput
    如果遥测设备是输出消息的目标,且 Publication 节点不合适
    HTTPReply
    如果消息用于 Web Service 客户机
    HTTPRequest
    如果您的消息流与 Web Service 客户机进行交互
    Real-timeOptimizedFlow
    如果目标应用程序是 JMS 或多点广播应用程序
    更新开始JMSOutput更新结束
    更新开始如果消息用于 JMS 目标。更新结束
    用户定义的输出节点
    如果目标是使用不同协议或传输的客户机或应用程序
    Output 节点
    如果您正在创建一个要嵌入另一个消息流(子流)的消息流,且被嵌入的消息流不会部署为独立的消息流,您必须至少包含一个 Output 节点以将消息传播到连接子流的后继节点。

    Output 节点的一个实例表示一个 out 终端。例 如,如果您已经包含了 Output 节点的两个实例,“子流”图标显示两个 out 终端,您可以用与连接任何其他节点的相同方法将这两个终端连接到主流中的其他节点。

消息处理、增强和转换

多数企业的应用程序已开发数年,运行于不同系统中,且使用的是不同的编程语言和通信方法。WebSphere Message Broker 免去了应用程序分辩这些区别的需要,因为它具有一项功能,即配置消息流使其能将消息从一种格式转换为另一种格式。

例如,在不同应用程序中个人姓名存在多种格式。姓在前或在后,有或没有中间名,大写或小写;这些只是其中部分而已。由于您可将消息流配置为了解每个应用程序的需求,因此无需修改发送或接收应用程序,每条消息即可转换为正确的格式。

您可以使用多种方法使用消息的内容以更新这些内容。您在此处的选项可能取决于消息流是否必须处理预定义的(建模的)消息和/或自定义消息(例如,XML)。

消息流可完全重建消息、将它从一种格式转换为另一种格式(无论格式表示字段顺序、字节顺序还是语言等)、除去消息的内容或将特定数据导入消息。例如,节点可与数据库进行交互,以检索其他信息或将消息副本(整个消息或消息的部分)存储在数据库中用于脱机处理。

以下示例表明了消息转换的重要性:

  • 订单输入应用程序中“部件标识”位于消息体,而其合作伙伴的存货应用程序中该标识却位于消息头。于是,将消息传递至可区分两种不同格式的消息流中,便能在需要时调整信息格式了。
  • 数据输入应用程序创建包含股票交易信息的消息。 某些应用程序接收该消息需要原先所提供的信息,而另一些还需要有关本益(PE)比的信息添加到消息中。股票交易消息传递至某个消息流,该消息流将消息传到某些输出节点且不做任何更改,但会为其他节点计算和添加额外信息。消息流通过在数据库中查看当前股票价格来执行该操作,并使用该值和原始消息中的交易信息来计算 PE 值,然后再传递更新后的消息。

您还可以创建使用节点进行相互交互的消息流。尽管一个消息流的缺省操作不影响另一个消息流的操作,但您可以配置消息流将信息存储到外部源(如数据库)中并从中检索信息,从而使之产生影响。

Compute
您可以处理消息内容、以某种方式转换消息、与数据库进行交互来修改消息或数据库内容,并使用 Compute 节点传递一条或多条新消息。您可以使用此节点来处理预定义和自定义的消息。

使用 ESQL 编辑器创建特定于该节点的 ESQL 模块,其中包含定义针对消息或数据库的要执行操作的语句。 请勿在任何其他类型的节点中使用为在 Compute 节点中使用而开发的 ESQL 代码。

您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。

您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。

如果您的消息处理要求复杂,请在单个 Compute 节点中完成这些操作。较少数量,但较复杂的 Compute 节点表现比较大数量,但较简单的 Compute 节点要好,因为代理在每个 Compute 节点的入口处解析消息。

Mapping
您可以通过使用 Mapping 节点从输入消息的元素或者从数据库内容映射输出消息的元素的内容来从输入消息创建新消息。您也可以抽取部分消息,并可选地更改它们的内容,以创建是节点接收到的消息的部分副本的新输出消息。Mapping 节点仅处理预定义消息。

您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。

使用映射编辑器,您可以开发映射来执行有关 Mapping 节点中预定义消息的简单操作。但请勿在任何其他类型的节点中使用为在 Mapping 节点中使用而开发的映射。

Extract
您可以使用 Extract 节点从指定的输入消息元素创建新输出消息。您也可以抽取部分消息,并随意更改它们的内容,以创建作为节点所接收消息的部分副本的新输出消息。Extract 节点仅处理预定义消息。

使用映射编辑器,您可以开发映射来执行有关 Extract 节点中预定义消息的简单操作。但请勿在任何其他类型的节点中使用为在 Extract 节点中使用而开发的映射。

Database
使用 Database 节点与节点属性标识的数据库进行交互。Database 节点处理预定义的和自定义的消息。使用 ESQL 编辑器,您可以编码 ESQL 函数来更新来自消息的数据库内容,将新信息插入到数据库中,并获取可以根据消息中的信息从数据库删除信息。但请勿在任何其他类型的节点中使用为在 Database 节点中使用而开发的 ESQL 代码。

该节点提供了一个非常灵活的接口,并提供了众多功能。它也有您可使用以用于控制交互作用如何参与到事务中的属性。

您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。

您只能从此节点来更新数据库;您无法更新任何消息内容。如果您要更新消息内容,请使用 Compute 或 Mapping 节点。

DataDelete、DataInsert、DataUpdate
DataDelete、DataInsert 和 DataUpdate 节点是 Database 节点的特殊形式,它们提供单一方式的交互作用(删除一行或多行、插入一行或多行或分别更新一行或多行现有行)。DataDelete、DataInsert 和 DataUpdate 节点只处理预定义消息。使用映射编辑器开发映射来执行这些函数。但请勿在任何其他类型的节点中使用为这些节点而开发的映射。这些节点也使您能控制它们执行的更新的事务性特征。

您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。

您只能从这些节点来更新数据库:不能更新任何消息内容。如果您要更新消息内容,请使用 Compute 或 Mapping 节点。

Warehouse
Warehouse 节点提供一个存储接口,您可以使用该接口将消息的全部或一部分存储在数据库中(例如,出于审计原因)。Warehouse 节点仅处理预定义消息。使用映射编辑器开发映射来执行此操作。但请勿在任何其他类型的节点中使用为 Warehouse 节点而开发的映射。

您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。

您只能从此节点来更新数据库;您无法更新任何消息内容。如果您要更新消息内容,请使用 Compute 或 Mapping 节点。

XMLTransformation

如果要将输入 XML 消息转换为使用 XMLT 样式表的另一种格式,则使用 XMLTransformation 节点。数据必须可解析为 XML 消息。转换的结果是作为 BLOB 消息输出。使用在其内部定义的规则的样式表可对数据继续排序,根据某些条件选择要包含或排除的数据元素,以及将数据转换为其他数据格式。

Xalan-Java 变换引擎(Apache Xalan-java XSLT 处理器)用作基础的变换引擎。有关 XMLT 的详细信息,请参阅W3C XSL 变换

可将样式表和 XML 文件部署到代理执行组、工具样式表和 XML 文件维护中。

更新开始JMSMQTransform更新结束
更新开始使用 JMSMQTransform 节点将具有 JMS 消息树的消息转换为这样一种消息,该消息具有与 WebSphere MQ JMS 提供程序所产生消息的格式兼容的消息树结构。

JMSMQTransform 节点可以用来将消息发送到旧消息流并与 WebSphere MQ JMS 和 WebSphere Message Broker 发布预订进行互操作。

更新结束
更新开始MQJMSTransform更新结束
更新开始使用 MQJMSTransform 节点可以接收具有 WebSphere MQ JMS 提供程序消息树格式的消息,并将它们转换为与要发送到 JMS 目标的消息兼容的格式。

MQJMSTransform 节点可以用来将消息发送到旧消息流并与 WebSphere MQ JMS 和 WebSphere Message Broker 发布预订进行互操作。

更新结束
更新开始MQOptimizedFlow更新结束
更新开始

使用 MQOptimizedFlow 节点替换包含连接到发布节点的 MQInput 节点的 发布/预订 消息流,并通过 WebSphere MQ 传输使用 JMS。 不能在 z/OS 系统上使用 MQOptimizedFlow 节点。

使用 MQOptimizedFlow 节点可以提高性能,特别是在单个发布程序对单个订户产生持久发布的情况下。

更新结束
用户定义的
您可以包含用户定义的节点以与数据库进行交互。

您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。

下表总结了您可在这些节点中更新的内容。

节点 更新数据库? 更新消息? 更新 LocalEnvironment? 是否需要消息集?
Compute
Database
DataDelete
DataInsert
DataUpdate
Extract
Mapping
Warehouse
作出决定

您可以按多种方式使用确定消息流中顺序和控制权流向的节点来决定流处理消息的方式。您还可以使用确定消息流内事件发生时间和发生频率的节点(TimeoutControl 和 TimeoutNotification)。 路由是独立于消息转换执行的,但消息所采用的路由可能恰恰决定了要对消息执行的转换。

例如,汇款应用程序始终将消息发送到另一个应用程序。您可能决定每笔汇款额超过 $10,000 的消息必须同时发送到另一个应用程序,以便记录所有金额大的交易。

再举一例,一家国家汽车俱乐部会向订单超过某个阈值的特殊会员提供高级服务。大多订单都是通过常规通道路由的,但如果会员号和订单金额满足某个条件,便会对该订单予以特殊处理。

您还可以通过在处理消息时将附加路由信息构建到消息中来建立更加动态的路由选项。设置可选规则集以根据设置到消息的值(目的地)来接收消息。您可以如此制定这些规则,由一个或多个可选规则集按所添加消息内容确定的顺序处理消息。

使用以下节点决定消息通过消息流采用的路由:

更新开始验证更新结束
更新开始使用 Validate 节点可以检查消息是否如预期的那样到达它的输入终端。您可以检查消息是否具有预期的消息模板属性(即,消息域、消息集和消息类型)以及消息内容是否正确。您可以针对一个或多个消息域、消息集或消息类型检查消息。

Validate 节点将替换 Check 节点,在 WebSphere Message Broker V6.0 和后续发行版中不推荐使用 Check 节点。Validate 节点和 Check 节点的工作方式相同,但它具有额外的验证属性,使支持消息验证功能的解析器能够验证消息的内容。

更新结束
Filter
您可以编码 ESQL 语句以确定此节点发送的消息到的下一个节点。但请勿在任何其他类型的节点中使用为在 Filter 节点中使用而开发的 ESQL 代码。

节点的终端为 true、false、unknown 和 failure;如果测试成功,则消息传播到 true 终端,而如果失败,则传播到 false 终端。如果语句无法解析(例如,它测试到字段的值没有出现在输入消息中),则消息传播到 unknown 终端。如果检测到任何其他错误,则消息传播到 failure 终端。

ESQL 语句中的测试可取决于消息内容、数据库内容或两者的组合。

如果引用了数据库,则可以通过为代理系统上的注册表中定义的每个数据源指定用户和密码信息,来控制该节点访问数据库的方法。 在分布式系统上,使用 mqsisetdbparms 命令来初始化和维护这些值。

在 z/OS 上,使用代理启动的任务标识访问数据库。

优先于 Compute 节点,使用该节点来提供此功能;尽管您可以配置 Compute 节点以控制消息选择和路由,但 Filter 节点的表现更好。

FlowOrder
您可以连接此节点的终端以强制消息被一个节点序列处理,后面接着被第二个节点序列处理。
更新开始Passthrough更新结束
更新开始使用 Passthrough 节点启用运行时子流的版本控制。 Passthrough 节点允许您将标号添加到消息流或子流。 通过将该标号与您的版本控制系统中的关键字替代值相结合,您就可以确定已部署的消息流中所包含的子流版本。您可以为自己使用此标号。如果标号中包含了正确的版本关键字,则可以看到标号值:
  • 使用 mqsireadbar 命令,该值存储在代理归档(BAR)文件中
  • 如最近一次部署到某个特定的代理,该值在 Message Brokers Toolkit 中已部署的消息流的属性中
  • 如果您为该消息流启用用户跟踪,则该值在运行时中。
更新结束
RouteToLabel 和 Label
您可以在 Compute 节点中定义一张目的地列表,RouteToLabel 节点在这些目的地上进行操作,该节点询问目的地并将消息传递到相应的 Label 节点。
ResetContentDescriptor
当消息位流在消息流中接下来由后继的节点解析时,您可以设置使用的新的消息属性。

您可能需要在每天的某个特定时间运行批处理作业,或可能需要按固定的时间间隔处理和发布信息(例如,计算货币汇率并将其发送到银行),或您可能需要对未在定义的时间内完成的某些交易执行指定的恢复操作。对于所有这些情况,都提供了两个超时节点(TimeoutControl 和 TimeoutNotification)。

TimeoutControl
在消息流中同时使用 TimeoutControl 和 TimeoutNotification 节点以控制发生在特定时间或已定义时间间隔中的事件。TimeoutControl 节点接收包含超时请求的输入消息。该输入消息经验证和存储(整条或部分消息),由消息流中关联的 TimeoutNotification 节点进行传播。输入消息也是不经任何更改传播到消息流的下一个节点的。

多个 TimeoutControl 节点可以与每个 TimeoutNotification 节点相关联。

TimeoutNotification
使用独立 TimeoutNotification 节点生成消息,这些消息会在配置的时间或时间间隔处传播到消息流的下一个节点以做进一步处理。
整理请求

您可以使用 AggregateControl、AggregateReply 和 AggregateRequest 节点来整理相关请求和响应。使用这些节点可生成响应一个输入消息的多个请求,可控制和协调响应这些请求时接收到的响应,并可结合这些响应所提供的信息继续进行处理。

错误处理和报告

您可以使用影响错误处理和报告的节点:

Trace
当您包含 Trace 节点时,您可以生成一个或多个跟踪条目以记录此时消息流中正在发送什么。
TryCatch
当您包含 TryCatch 时,您可以控制抛出异常时的错误处理。
Throw
当您包含 Throw 节点时,可以强制抛出异常,并可指定异常的身份以便更容易地诊断问题。

除了 Compute、Extract 和 Mapping 节点,节点接收到的输入消息和节点上发送的输出消息是等同的。

相关概念
消息流概述
最终用户应用程序支持
LocalEnvironment 树结构
相关任务
设置 DB2
设计消息流
从消息流访问数据库
创建消息流
定义消息流内容
使用节点作出决定
部署
相关参考
mqsisetdbparms 命令
内置节点
最终用户应用程序支持
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac00330_