阅读有关消息流节点的概念主题。
WebSphere Message Broker 包含许多您可在消息流中使用的消息处理节点。它还提供一个界面,您可使用该界面定义自己的节点,称为用户定义的节点。
您决定使用哪些节点取决于要在消息上执行的处理。 可认为内置节点属于多个类别,并在工作台中分组显示在这些类别中(尽管此分组对它们的操作没有影响)。您也可以使用相同的方法分类用户定义的节点。类别为:
不推荐在 WebSphere
Message Broker V6.0 中使用包含 MQeInput 节点的消息流。重新设计消息流,除去 MQe 节点并替换成 MQ 节点,这些 MQ 节点已根据您自己的规范进行配置,并与 MQe 网关配置一致。有关更多详细信息,请参阅迁移包含 WebSphere MQ Everyplace 节点的消息流。
Input 节点的一个实例表示一个 in 终端。例如,如果您 已经包含了 Input 节点的一个实例,“子流”图标显示一个 in 终端,您可以用与连接任何其他节点的相同方法将该终端连接到主流中的其他节点。
您只能部署至少有一个输入节点的消息流。如果您的消息流不包含输入节点,则会阻止您将消息流添加到代理归档文件。输入节点可在主消息流中,或在嵌入在主消息流中的消息流中。
您可以在一个消息流中使用多个输入节点。有关更多信息,请参阅使用多个输入节点。
不推荐在 WebSphere
Message Broker V6.0 中使用包含 MQeOutput 节点的消息流。重新设计消息流,除去 MQe 节点并替换成 MQ 节点,这些 MQ 节点已根据您自己的规范进行配置,并与 MQe 网关配置一致。有关更多详细信息,请参阅迁移包含 WebSphere MQ Everyplace 节点的消息流。
Output 节点的一个实例表示一个 out 终端。例 如,如果您已经包含了 Output 节点的两个实例,“子流”图标显示两个 out 终端,您可以用与连接任何其他节点的相同方法将这两个终端连接到主流中的其他节点。
多数企业的应用程序已开发数年,运行于不同系统中,且使用的是不同的编程语言和通信方法。WebSphere Message Broker 免去了应用程序分辩这些区别的需要,因为它具有一项功能,即配置消息流使其能将消息从一种格式转换为另一种格式。
例如,在不同应用程序中个人姓名存在多种格式。姓在前或在后,有或没有中间名,大写或小写;这些只是其中部分而已。由于您可将消息流配置为了解每个应用程序的需求,因此无需修改发送或接收应用程序,每条消息即可转换为正确的格式。
您可以使用多种方法使用消息的内容以更新这些内容。您在此处的选项可能取决于消息流是否必须处理预定义的(建模的)消息和/或自定义消息(例如,XML)。
消息流可完全重建消息、将它从一种格式转换为另一种格式(无论格式表示字段顺序、字节顺序还是语言等)、除去消息的内容或将特定数据导入消息。例如,节点可与数据库进行交互,以检索其他信息或将消息副本(整个消息或消息的部分)存储在数据库中用于脱机处理。
以下示例表明了消息转换的重要性:
您还可以创建使用节点进行相互交互的消息流。尽管一个消息流的缺省操作不影响另一个消息流的操作,但您可以配置消息流将信息存储到外部源(如数据库)中并从中检索信息,从而使之产生影响。
使用 ESQL 编辑器创建特定于该节点的 ESQL 模块,其中包含定义针对消息或数据库的要执行操作的语句。 请勿在任何其他类型的节点中使用为在 Compute 节点中使用而开发的 ESQL 代码。
您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。
您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。
如果您的消息处理要求复杂,请在单个 Compute 节点中完成这些操作。较少数量,但较复杂的 Compute 节点表现比较大数量,但较简单的 Compute 节点要好,因为代理在每个 Compute 节点的入口处解析消息。
您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。
使用映射编辑器,您可以开发映射来执行有关 Mapping 节点中预定义消息的简单操作。但请勿在任何其他类型的节点中使用为在 Mapping 节点中使用而开发的映射。
使用映射编辑器,您可以开发映射来执行有关 Extract 节点中预定义消息的简单操作。但请勿在任何其他类型的节点中使用为在 Extract 节点中使用而开发的映射。
该节点提供了一个非常灵活的接口,并提供了众多功能。它也有您可使用以用于控制交互作用如何参与到事务中的属性。
您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。
您只能从此节点来更新数据库;您无法更新任何消息内容。如果您要更新消息内容,请使用 Compute 或 Mapping 节点。
您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。
您只能从这些节点来更新数据库:不能更新任何消息内容。如果您要更新消息内容,请使用 Compute 或 Mapping 节点。
您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。
您只能从此节点来更新数据库;您无法更新任何消息内容。如果您要更新消息内容,请使用 Compute 或 Mapping 节点。
如果要将输入 XML 消息转换为使用 XMLT 样式表的另一种格式,则使用 XMLTransformation 节点。数据必须可解析为 XML 消息。转换的结果是作为 BLOB 消息输出。使用在其内部定义的规则的样式表可对数据继续排序,根据某些条件选择要包含或排除的数据元素,以及将数据转换为其他数据格式。
Xalan-Java 变换引擎(Apache Xalan-java XSLT 处理器)用作基础的变换引擎。有关 XMLT 的详细信息,请参阅W3C XSL 变换。
可将样式表和 XML 文件部署到代理执行组、工具样式表和 XML 文件维护中。
JMSMQTransform 节点可以用来将消息发送到旧消息流并与 WebSphere MQ JMS 和 WebSphere Message Broker 发布预订进行互操作。
MQJMSTransform 节点可以用来将消息发送到旧消息流并与 WebSphere MQ JMS 和 WebSphere Message Broker 发布预订进行互操作。
使用 MQOptimizedFlow 节点替换包含连接到发布节点的 MQInput 节点的 发布/预订 消息流,并通过 WebSphere MQ 传输使用 JMS。 不能在 z/OS 系统上使用 MQOptimizedFlow 节点。
使用 MQOptimizedFlow 节点可以提高性能,特别是在单个发布程序对单个订户产生持久发布的情况下。
您可以通过为节点属性中指定的数据源指定用户和密码,控制此节点访问数据库的方式。使用 mqsisetdbparms 命令来初始化和维护这些值。
下表总结了您可在这些节点中更新的内容。
节点 | 更新数据库? | 更新消息? | 更新 LocalEnvironment? | 是否需要消息集? |
---|---|---|---|---|
Compute | 是 | 是 | 是 | 否 |
Database | 是 | 否 | 是 | 否 |
DataDelete | 是 | 否 | 是 | 是 |
DataInsert | 是 | 否 | 是 | 是 |
DataUpdate | 是 | 否 | 是 | 是 |
Extract | 是 | 是 | 是 | 是 |
Mapping | 是 | 是 | 是 | 是 |
Warehouse | 是 | 否 | 是 | 是 |
您可以按多种方式使用确定消息流中顺序和控制权流向的节点来决定流处理消息的方式。您还可以使用确定消息流内事件发生时间和发生频率的节点(TimeoutControl 和 TimeoutNotification)。 路由是独立于消息转换执行的,但消息所采用的路由可能恰恰决定了要对消息执行的转换。
例如,汇款应用程序始终将消息发送到另一个应用程序。您可能决定每笔汇款额超过 $10,000 的消息必须同时发送到另一个应用程序,以便记录所有金额大的交易。
再举一例,一家国家汽车俱乐部会向订单超过某个阈值的特殊会员提供高级服务。大多订单都是通过常规通道路由的,但如果会员号和订单金额满足某个条件,便会对该订单予以特殊处理。
您还可以通过在处理消息时将附加路由信息构建到消息中来建立更加动态的路由选项。设置可选规则集以根据设置到消息的值(目的地)来接收消息。您可以如此制定这些规则,由一个或多个可选规则集按所添加消息内容确定的顺序处理消息。
使用以下节点决定消息通过消息流采用的路由:
Validate 节点将替换 Check 节点,在 WebSphere Message Broker V6.0 和后续发行版中不推荐使用 Check 节点。Validate 节点和 Check 节点的工作方式相同,但它具有额外的验证属性,使支持消息验证功能的解析器能够验证消息的内容。
节点的终端为 true、false、unknown 和 failure;如果测试成功,则消息传播到 true 终端,而如果失败,则传播到 false 终端。如果语句无法解析(例如,它测试到字段的值没有出现在输入消息中),则消息传播到 unknown 终端。如果检测到任何其他错误,则消息传播到 failure 终端。
ESQL 语句中的测试可取决于消息内容、数据库内容或两者的组合。
如果引用了数据库,则可以通过为代理系统上的注册表中定义的每个数据源指定用户和密码信息,来控制该节点访问数据库的方法。 在分布式系统上,使用 mqsisetdbparms 命令来初始化和维护这些值。
在 z/OS 上,使用代理启动的任务标识访问数据库。
优先于 Compute 节点,使用该节点来提供此功能;尽管您可以配置 Compute 节点以控制消息选择和路由,但 Filter 节点的表现更好。
您可能需要在每天的某个特定时间运行批处理作业,或可能需要按固定的时间间隔处理和发布信息(例如,计算货币汇率并将其发送到银行),或您可能需要对未在定义的时间内完成的某些交易执行指定的恢复操作。对于所有这些情况,都提供了两个超时节点(TimeoutControl 和 TimeoutNotification)。
多个 TimeoutControl 节点可以与每个 TimeoutNotification 节点相关联。
您可以使用 AggregateControl、AggregateReply 和 AggregateRequest 节点来整理相关请求和响应。使用这些节点可生成响应一个输入消息的多个请求,可控制和协调响应这些请求时接收到的响应,并可结合这些响应所提供的信息继续进行处理。
您可以使用影响错误处理和报告的节点:
除了 Compute、Extract 和 Mapping 节点,节点接收到的输入消息和节点上发送的输出消息是等同的。