EnforceOrder Processor
描述
在单个节点内强制执行属于同一数据组的 FlowFile 的预期排序。
标签
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| Group Identifier | ${filename} | EnforceOrder 支持多个排序组。'组标识符' 用于确定 FlowFile 属于哪个组。此属性将对每个传入的 FlowFile 进行求值。如果求值结果为空,FlowFile 将被路由到 failure。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Order Attribute | | FlowFile 属性的名称,其值将用于强制组内 FlowFile 的顺序。如果 FlowFile 没有此属性,或其值不是整数,FlowFile 将被路由到 failure。 | |
| Initial Order | 0 | 当组的第一个 FlowFile 到达时,将计算初始目标顺序并将其存储在管理的状态中。之后,EnforceOrder 将开始跟踪目标顺序并将其存储在状态管理存储中。如果使用了表达式语言但求值结果不是整数,则 FlowFile 将被路由到 failure,并且初始顺序将保持未知,直到连续的 FlowFile 提供有效的初始顺序。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Maximum Order | | 如果指定,任何具有更大顺序的 FlowFile 将被路由到 failure。此属性对给定组仅计算一次。计算最大顺序后,它将持久化在状态管理存储中并用于属于同一组的其他 FlowFile。如果使用了表达式语言但求值结果不是整数,则 FlowFile 将被路由到 failure,并且最大顺序将保持未知,直到连续的 FlowFile 提供有效的最大顺序。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Batch Count | 1000 | EnforceOrder 在一次执行中可以处理的最大 FlowFile 数。 | |
| Wait Timeout | 10 min | 指示等待的 FlowFiles 将被路由到“超越”关系的持续时间。 | |
| Inactive Timeout | 30 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 时的预期顺序。 |
状态管理
| 作用域 | 描述 |
|---|---|
| LOCAL | EnforceOrder 每个订购组使用以下状态: '<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)
该组件不受限。
输入要求
该组件要求有传入连接。