EnforceOrder

文档中心 › 组件索引 › EnforceOrder

EnforceOrder Processor

类型全限定名:cn.org.acal.lynxus.processors.standard.EnforceOrder

所属 Bundle:cn.org.acal.lynxus:lynxus-standard-nar:2.11.8

描述

在单个节点内强制执行属于同一数据组的 FlowFile 的预期排序。

标签

sortorder

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
Group Identifier${filename}EnforceOrder 支持多个排序组。'组标识符' 用于确定 FlowFile 属于哪个组。此属性将对每个传入的 FlowFile 进行求值。如果求值结果为空,FlowFile 将被路由到 failure。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Order AttributeFlowFile 属性的名称,其值将用于强制组内 FlowFile 的顺序。如果 FlowFile 没有此属性,或其值不是整数,FlowFile 将被路由到 failure。
Initial Order0当组的第一个 FlowFile 到达时,将计算初始目标顺序并将其存储在管理的状态中。之后,EnforceOrder 将开始跟踪目标顺序并将其存储在状态管理存储中。如果使用了表达式语言但求值结果不是整数,则 FlowFile 将被路由到 failure,并且初始顺序将保持未知,直到连续的 FlowFile 提供有效的初始顺序。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Maximum Order如果指定,任何具有更大顺序的 FlowFile 将被路由到 failure。此属性对给定组仅计算一次。计算最大顺序后,它将持久化在状态管理存储中并用于属于同一组的其他 FlowFile。如果使用了表达式语言但求值结果不是整数,则 FlowFile 将被路由到 failure,并且最大顺序将保持未知,直到连续的 FlowFile 提供有效的最大顺序。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Batch Count1000EnforceOrder 在一次执行中可以处理的最大 FlowFile 数。
Wait Timeout10 min指示等待的 FlowFiles 将被路由到“超越”关系的持续时间。
Inactive Timeout30 min指定不活跃组的状态将从管理的状态中清除的持续时间。如果在指定时间内没有新的 FlowFile 到达某组,则该组被视为不活跃。不活跃超时必须长于等待超时。如果 FlowFile 在其组已被清除后延迟到达,它将被视为全新组,但永远不会匹配顺序,因为预期的前序 FlowFile 已经消失。该 FlowFile 最终会因等待超时而路由到 'overtook'。为避免这种情况,组状态应保留足够长的时间,但较短的持续时间有助于重用相同的组标识符。

关系 (Relationships)

名称描述自动终止
failure没有必需属性或无法计算这些属性的 FlowFiles 将被路由到此关系否
overtook等待前面的 FlowFiles 时间超过等待超时并超过这些 FlowFiles 的 FlowFile 将被路由到此关系。否
skipped订单比当前订单更年轻的 FlowFile(这意味着到达得太晚并被跳过)将被路由到此关系。否
success具有匹配订单号的 FlowFile 将被路由到此关系。否
wait顺序不匹配的 FlowFile 将被路由到此关系否

写入的 FlowFile 属性

名称描述
EnforceOrder.startedAt所有经过该处理器的 FlowFile 都将具有此属性。 该值用于确定等待超时。
EnforceOrder.result通过此处理器的所有 FlowFile 都将具有此属性,表示它被路由到哪个关系。
EnforceOrder.detail路由到“失败”或“跳过”关系的 FlowFile 将具有描述详细信息的属性。
EnforceOrder.expectedOrder路由到“等待”或“跳过”关系的 FlowFile 将具有此属性,表示处理 FlowFile 时的预期顺序。

状态管理

作用域描述
LOCALEnforceOrder 每个订购组使用以下状态: '<groupId>.target' is a order number which is being waited to arrive next. When a FlowFile with a matching order arrives, or a FlowFile overtakes the FlowFile being waited for because of wait timeout, target order will be updated to (FlowFile.order + 1). '<groupId>.max is the maximum order number for a group. '<groupId>.updatedAt' is a timestamp when the order of a group was updated last time. These managed states will be removed automatically once a group is determined as inactive, see 'Inactive Timeout' for detail.

受限 (Restricted)

该组件不受限。

输入要求

该组件要求有传入连接。