创建聚集扇入流

聚集扇入流接收由扇出流发出的请求消息的响应并构造包含所有收到的响应的组合响应消息。

开始之前:

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

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

扇出流是否为事务性的,如果不是您指定的超时值而定,可能在扇入流收到所有应答之前生成组合响应消息。请参阅创建聚集扇出流获取关于本主题的更多信息。

可以在同一个消息流中包含扇出和扇入流。但建议创建两个独立的流。请勿在相同或不同的执行组中部署同一个扇入流的多个副本。有关配置独立消息流的优势的更多信息,请参阅关联扇出和扇入聚集流

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

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

  1. 切换到“代理应用程序开发”透视图
  2. 创建消息流来提供扇入处理。
  3. 将以下节点添加到“编辑器”视图中并按所述配置和连接它们:
    输入节点
    输入节点接收对从扇出流生成的多个请求消息的响应。

    这必须是支持请求/应答模型的输入节点,如 MQInput 节点,或这些节点的混合(视发送这些响应的应用程序的需求而定)。每个输入节点接收到的响应必须跨越与它响应的请求相同的协议发送(例如,如果您将 MQOutput 节点包含在扇出流中,则到该请求的响应必须通过此流中的 MQInput 节点接收)。

    1. 右键单击输入节点并单击属性
    2. 为此节点指定输入消息的源。例如,在 MQOutput 节点从其中接收消息的基本属性队列名称中指定 WebSphere MQ 队列的名称。
    3. 可选的:为您要对此节点配置的其他任何属性指定值。
    4. 将输入节点的 out 终端连接到 AggregateReply 节点的 in 终端。

      这表示最简单的配置;如果适当,您可以在输入节点和 AggregateReply 节点之间包含其他节点。例如,您可能要出于审计目的(在 Warehouse 节点中)存储应答。

    注: 建议有一个输入节点,在上述的扇入流开始处接收所有的聚集响应消息。使用一个而不是多个节点,将确保没有任何具体的应答输入节点线程始终要完成消息流的聚集和执行,同时其他节点将它们的响应消息发送至 Aggregate Reply,该节点随后将变得有资格超时。使用单个输入节点将为每个聚集的应答创建更有序的处理流程,该流程可以通过使用附加实例成功扩展来提供更强的处理能力。
    AggregateReply 节点
    AggregateReply 节点通过其 in 终端接收来自输入节点的入站响应。AggregateReply 节点接收到的每个应答消息都持久地存储在代理数据库中。

    当收集了针对某个特定聚集请求组的所有应答后,AggregateReply 节点将创建一个聚集应答消息并通过 out 终端进行传播。

    1. 右键单击 AggregateReply 节点并单击属性
    2. 设置 AggregateReply 的聚集名属性来标识此聚集。设置此值,使其与扇出流中相应 AggregateControl 节点中的聚集名属性的值相同。
    3. 可选:如果要在将未识别的消息传播到 unknown 终端之前保留它,请为未知消息超时设置一个值。如果您正在使用分隔的扇出流和扇入流,可能要将此值设置为非零的数字, 以防在控制消息到达时有延迟。
    4. 可选:如果要明确处理未识别的消息,请将 unknown 终端连接到另一个节点或一连串节点。如果不将此终端与消息流中另一个节点连接,将会废弃通过此终端传播的消息。
    5. 可选:如果已经在 AggregateControl 节点中为此聚集指定了超时值,并且要明确处理在收到所有应答之前到期的超时,请将 timeout 终端连接到另一个节点或一连串节点。如果定时器到期,则将部分完成聚集的应答发送到 timeout 终端。如果不将此终端与消息流中另一个节点连接,将会废弃通过此终端传播的消息。
    6. 可选的:为您要对此节点配置的其他任何属性指定值。
    7. 将 AggregateReply 节点的 out 终端连接到 Compute 节点的 in 终端。
    注: 在 V6.0 中已经不推荐使用 AggregateReply 节点的 Control 终端了,缺省情况下,到此终端的任何连接(直接或间接)都将被忽略。这是为了最大化聚集流的效率,且不会损坏聚集的可靠性。这是最佳配置。

    然而,如果您希望 AggregateReply 节点在它的 control 终端上接收扇出流上相应的 AggregateControl 节点发送的控制消息,则必须进行如创建聚集扇出流中所述的必要连接。建议从 AggregateReply 节点到输出节点的路径尽可能直接。保持扇出流简短将有助于提高聚集的性能。请勿修改此控制消息的内容。

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

    Compute 节点
    Compute 节点接收包含组合响应的消息。此组合消息的格式对于输出不太可能有效,因为聚集的应答消息具有不常见的结构,无法变成某些节点(例如 MQOutput 节点)需要的位流。out 和 timeout 终端始终输出聚集的应答消息,因此消息在传递 MQOutput 节点之前始终需要进一步处理。因此必须包含 compute 节点并配置此节点来创建有效的输出消息。
    1. 右键单击 Compute 节点并单击属性
    2. 在基本属性 ESQL 模块中指定定制此节点功能的 ESQL 模块。
    3. 右键单击“节点”并单击打开 ESQL 来打开包含此节点的模块的 ESQL 文件。在“ESQL 编辑器”视图中突出显示模块。
    4. 编码 ESQL 从输入消息中聚集的应答创建单个输出消息。

      访问组合消息内容中提供了通过 out 终端传播的聚集应答消息的结构和有关如何 访问其内容的信息。

    5. 可选的:为您要对此节点配置的其他任何属性指定值。
    6. 将 Compute 节点的 out 终端连接到输出节点的 in 终端,该输出节点代表单个响应消息的目标。
    输出节点
    包含扇入流的输出节点。这可以是任何内置节点,或用户定义的输出节点。
    1. 右键单击输出节点并单击属性
    2. 为此节点的输出消息指定目标。例如,在 MQOutput 节点将消息发送到的基本属性队列名称中指定 WebSphere MQ 队列的名称。
    3. 可选的:为您要对此节点配置的其他任何属性指定值。
  4. 按 Ctrl-S 键保存消息流并验证其配置。

访问组合消息内容

AggregateReply 节点在 Root 下的组合消息树中创建了一个文件夹,称为 ComIbmAggregateReplyBody。在下面,它使用您在 AggregateRequest 节点中设置 的文件夹名创建了一些文件夹。相关的应答消息放在这些文件夹下面。

例如,请求消息可能具有以下文件夹名:

  • TAXI
  • HOTEL

由 AggregateReply 节点创建而产生的聚集应答消息可能具有与下面所示的内容相类似的结构:


这是在 Root 下的元素 ComIbmAggregateReplyBody 下聚集的消息内容的树的图表。其内容在它周围的文本中有所描述。

您可以使用 Compute 节点访问来自使用以下相关名的出租车公司的应答:

InputRoot.ComIbmAggregateReplyBody.TAXI.xyz

文件夹的名称可以不是唯一的。如果您有多个具有文件夹名 TAXI 的请求,可以使用阵列下标符号访问单独的应答,例如:

InputRoot.ComIbmAggregateReplyBody.TAXI[1].xyz
InputRoot.ComIbmAggregateReplyBody.TAXI[2].xyz
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac12300_