创建聚集扇出流

聚集扇出流接收初始输入消息并重构它,将大量请求呈现给大量目标应用程序。

开始之前:

要执行此任务,必须先完成下列任务:

此外,还建议您在完成该任务前先阅读有关消息流聚集的概述。

可以在同一个消息流中包含扇出和扇入流。但建议创建两个独立的流。有关配置独立消息流的优势的更多信息,请参阅关联扇出和扇入聚集流

要查看扇出流的示例,请参阅随 WebSphere Message Broker 一起提供的航空公司订票样本

要创建扇出流,请执行以下操作:

  1. 切换到“代理应用程序开发”透视图
  2. 创建新消息流来提供扇出处理。
  3. 将以下节点添加到“编辑器”视图中并按所述配置和连接它们:
    输入节点
    输入节点接收生成多个请求消息的输入消息。此节点可以是任何内置节点或用户定义的输入节点。
    1. 右键单击输入节点并单击属性
    2. 为此节点指定输入消息的源。例如,在 MQOutput 节点从其中接收消息的基本属性队列名称中指定 WebSphere MQ 队列的名称。
    3. 可选的:为您要对此节点配置的其他任何属性指定值。建议您将高级属性事务方式设置为缺省值“是”来确保聚集请求消息被放置在同步点下。这将避免发生这样一种情况:AggregateReply 节点先收到响应消息,然后再收到通知它聚集实例的控制消息。通过在可处理控制下放置扇出流,将确保扇出流完成之后,才会有响应消息达到 AggregateReply。
    4. 将输入节点的 out 终端连接到 AggregateControl 节点的 in 终端。

      这表示最简单的配置;如果适当,您可以在输入节点和 AggregateControl 节点之间包含其他节点。例如,您可能要出于审计目的(在 Warehouse 节点中)存储请求,或将唯一的标识添加到消息(在 Compute 节点中)。

    5. 可选:如果在一个消息流内扇出流和扇入流是结合在一起的,建议您修改“高级”选项卡上的排序方式属性。选择按队列顺序选项并确保同时选择了逻辑顺序选项。这将强制输入节点是单线程的,以便维持到达队列消息的逻辑顺序。这会导致您使其可用的任何附加实例线程仅在扇入输入节点中共享,以提高聚集的性能。如果扇入和扇出流各处于单独的消息流中,此步骤就没有必要了,因为您可以专门针对扇入流提供其他线程。
    AggregateControl 节点
    AggregateControl 节点更新与输入消息(附带 AggregateRequest 节点必需的信息)关联的 LocalEnvironment。
    1. 右键单击 AggregateControl 节点并单击属性
    2. 设置 AggregateControl 节点的聚集名属性来标识此特殊的聚集。稍后将使用它将此 AggregateControl 节点与特定的 AggregateReply 节点关联。您指定的聚集名在代理内必须是上下文中唯一的。
    3. 可选:设置超时属性来指定代理在执行一些操作之前,等待应答到达的时间(在为聚集设置超时中进行了描述)。

      如果在 AggregateControlNode 上没有设置超时,则在所有的聚集应答消息返回之前,将不会除去内部存储的聚集请求。这可能会导致在内部队列上逐渐集结消息。要避免这种情况,将超时设置为非零值(零代表永远不超时),这样当达到超时值时,将除去请求,队列将不会被冗余的请求填满。即使超时不是必需的或预期的,最好还是将超时值设置为一个较大的值(例如 864000 秒,即 24 小时),这样队列偶尔才会清除老的聚集。

    4. 将 AggregateControl 节点的 out 终端连接到一个或多个 Compute 节点的 in 终端,这些 Compute 节点对在此终端上传播的输入 消息中的请求提供解析和分解。
    注:V6.0 中已经不推荐使用 AggregateControl 节点的 control 终端了,缺省情况下,从此终端到 AggregateReply 节点的任何连接(直接或间接)都将被忽略。这是为了最大化聚集流的效率,且不会损坏聚集的可靠性。这是最佳配置。

    然而,如果您确实希望从 AggregateControl 节点发送控制消息到 AggregateReply 节点,则必须将 control 终端连接到扇入流上相应的 AggregateReply 节点(直接或间接,如关联扇出和扇入聚集流中所述)。如果将它间接连接到 AggregateReply 节点(例如通过 MQOutput 节点),则必须包含 Compute 节点将相应的头添加到消息,以确保能安全传送消息。

    另外,为了使 Control 终端和从它发起的连接能够被识别,必须启用环境变量 MQSI_AGGR_COMPAT_MODE。但是,选择该选项将拥有有关消息聚集的性能和行为的描述。有关这些含意和环境变量的完整描述,请参阅在聚集流中使用控制消息

    Compute 节点
    Compute 节点抽取来自输入消息的信息并构造新的输出消息。

    如果处理子任务请求的目标应用程序可以从单个输入消息抽取它们需要的信息,则无须包含 Compute 节点来分割消息。您可以将整个输入消息传递到所有目标应用程序。

    如果目标应用程序要接收个别的请求,而不是整个输入消息,则您必须包 含 Compute 节点来从输入消息生成每个个别的子任务输出消息。按以下方法配置每个 Compute 节点,将相应的输入消息的子集复制到每个输出消息。

    1. 右键单击 Compute 节点并单击属性
    2. 为基本属性计算方式选择一个值。此属性指定消息树的哪些部分是由节点修改的。

      AggregateControl 节点将元素插入到输入消息的 LocalEnvironment 树中,该输入消息在到达时由 AggregateRequest 节点读取。请确保将 LocalEnvironment 从输入消息复制到 Compute 节点中的输出消息。这会自动发生,除非您指定包含 LocalEnvironment 的值(所有LocalEnvironmentLocalEnvironment 和 MessageException 和 LocalEnvironment 其中之一)。

      如果您指定了这些值中的一个,则代理假设您正在用写到 LocalEnvironment 的 ESQL 定制 Compute 节点,并且您将复制输出消息中需要的树内的任何信息。

      如果要修改 LocalEnvironment,请添加以下语句,将所需的聚集信息从输入消息复制到输出消息:

      SET OutputLocalEnvironment.ComIbmAggregateControlNode =
                              InputLocalEnvironment.ComIbmAggregateControlNode;
    3. 可选的:为您要对此节点配置的其他任何属性指定值。
    4. 将每个 Compute 节点的 out 终端连接到输出节点的 in 终端,该输出节点代表您从此节点中的输入消息创建的输出请求消息的目标。
    输出节点
    包含在扇出流中生成的每个输出消息的输出节点。按如下所述配置每个节点,附带对每个目标的相应修改。

    这必须是支持请求/应答模型的输出节点,如 MQOutput 节点,或者这些节点的混合(视目标应用程序的需求而定)。

    1. 右键单击输出节点并单击属性
    2. 为此节点的输出消息指定目标。例如,在 MQOutput 节点将消息发送到的基本属性队列名称中指定 WebSphere MQ 队列的名称。目标应用程序必须处理它的请求并将响应发送至在它的输入消息中指示的应答目标(例如 WebSphere MQ ReplyToQueue)。
    3. 在左边的视图中单击“请求”并为这些属性设置值来指定应答发送到扇入流的输入队列。
    4. 可选的:为您要对此节点配置的其他任何属性指定值。
    5. 将输出节点的 out 终端连接到 AggregateRequest 节点的 in 终端。当消息通过输出节点的 out 终端传播时,内置输出节点用 AggregateRequest 需 要的其他信息更新相关的 LocalEnvironment 内的 WrittenDestination 文件夹。

      内置节点写的信息是队列名、队列管理器名、消息标识和相关标识( 来自 MQMD)和消息应答标识(设置为与消息标识相同的值)。

    AggregateRequest 节点
    包含在扇出流中生成的每个输出消息的 AggregateRequest 节点。
    1. 右键单击输出节点并单击属性
    2. 将基本属性文件夹名设置为标识已经发送的请求类型的值。此值由 AggregateReply 用来 在扇入流中接收到消息时与应答消息匹配。您为扇出流生成的每个请求指定的文件夹名必须是唯一的。

    AggregateRequest 节点为它处理的每条消息在 更新开始更新结束 中写记录。这使 AggregateReply 节点能确定每个响应与哪个请求关联。如果输出节点是非事务性的,则响应消息可能在提交数据库更新前到达扇入流。请参阅为聚集设置超时,获取关于如何能使用超时来避免这种情况的详细信息。

    警告:
    尽管使用超时能帮助避免上述的这种情况发生,但最好通过使您的扇出流变为事务性的,确保响应消息不可能在相应的 AggregateRequest 节点落实其数据库更新之前到达扇入流。
  4. 按 Ctrl-S 键保存消息流并验证其配置。
要收集由扇出流发起的聚集响应,创建扇入流,请参阅创建聚集扇入流
相关概念
消息流概述
LocalEnvironment 树结构
消息流聚集
用户定义的输入节点
用户定义的输出节点
相关任务
配置聚集流
创建聚集扇入流
在聚集流中使用控制消息
关联扇出和扇入聚集流
为聚集设置超时
使用多个 AggregateControl 节点
处理聚集流中的异常
设计消息流
创建消息流
定义消息流内容
生成多条输出消息
开发用户定义的扩展
相关参考
AggregateControl 节点
AggregateReply 节点
AggregateRequest 节点
Compute 节点
MQeInput 节点
MQeOutput 节点
MQInput 节点
MQOutput 节点
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac12290_