消息序列

使用消息序列确保按照特定顺序将消息交付至接收应用程序。

IBM® App Connect Enterprise 支持为消息添加序列号,并支持根据序列号对消息流中的消息进行重新排序。 消息可以按任意顺序到达,您可以使用 序列重新排序 节点将消息重新排序为所需序列。

在某些应用程序中,按照特定顺序处理消息的能力对于维护工作流完整性非常重要。 例如,必须按照发生顺序处理某个银行帐户的一系列借记和贷记,而且必须按照到达顺序发送所收到的、处理的和转发的患者记录。

到达消息流的消息可能包含或不包含序号。 如果从输入源接收到无序号的消息,那么可以保留接收消息的顺序,方法是使用 序列 节点为序列组中的每条消息生成单调递增的序号。 当每条消息到达 Sequence 节点时,序号将递增并与消息一起存储在节点上指定的位置中。

有关飞行中消息状态的信息存储在由 IBM MQ 控制的存储队列中。 如果您在由集成节点管理的集成服务器上使用消息排序功能,则必须在与集成节点位于同一台计算机上安装 IBM MQ ,才能使用 “排序 ”和 “重新排序 ”节点提供的功能。 如果您在独立的集成服务器上使用这些节点,可以使用远程默认队列管理器来控制系统队列,而无需在集成服务器所在的同一台机器上安装 IBM MQ。 独立集成服务器与 IBM MQ 之间的交互可通过客户端连接到远程队列管理器,并采用默认策略设置。 有关使用远程缺省队列管理器的更多信息,请参阅 使用远程缺省队列管理器配置集成服务器以使用远程缺省队列管理器

每个活动序列组的当前序列号存储在以下 IBM MQ 队列中:
  • SYSTEM.BROKER.SEQ.GROUP
  • SYSTEM.BROKER.SEQ.NUMBER
有关更多信息,请参阅 序列节点

当输入消息包含序号时,无论这些序号是由 Sequence 节点添加还是已在消息中的整数字段中定义,都可以使用 Resequence 节点来更改消息流中的消息顺序。

当消息到达 Resequence 节点时,它们将保留在存储队列中,直到传播并落实序列中的所有先前消息为止。 在每条消息变为序列中的下一条消息时,它将离开队列并向下传播至 Out 终端。 此事件序列确保消息保持正确的顺序,即使消息处理失败。

缺省情况下, Resequence 节点使用的存储队列为:
  • SYSTEM.BROKER.EDA.COLLECTIONS
  • SYSTEM.BROKER.EDA.EVENTS
但是,您可以使用 Resequence 策略来指定要由 Resequence 节点使用的备用队列 (请参阅 配置 Resequence 节点的事件存储)。
您可以将 Resequence 节点配置为在序列中的消息未能在指定时间段内到达时超时,并且可以指定在缺少消息时如何处理后续消息。 例如,您可以配置节点从而:
  • 必须总是维护消息序列
  • 消息序列中允许间隔,但是所有其他消息都必须位于序列中
  • 允许偶尔时序消息

有关如何为这些场景配置 Resequence 节点的信息,请参阅 处理缺少的消息

您可以将消息划分为可独立进行处理的序列组,从而允许同时处理多个序列。 有关序列组和重复消息处理的更多信息,请参阅 序列组

有关控制序列开始和结束的方式的更多信息,请参阅 启动消息序列