强制执行

描述:

强制执行单个节点内属于相同数据组的FlowFile的预期排序。尽管PriorityAttributePrioritizer可以用于连接上,以确保通过该连接的流文件具有优先级顺序,但根据错误处理,分支和其他流设计,FlowFiles可能会乱序。 EnforceOrder可用于对那些FlowFiles强制执行原始排序。 [重要说明]为使EnforceOrder生效,应在每个下游关系中使用FirstInFirstOutPrioritizer,直到FlowFiles的顺序通过诸如MergeContent之类的操作在物理上得到固定或存储到最终目标为止。

标签:

排序

特性:

在下面的列表中,必需属性的名称以粗体显示。其他任何属性(非粗体)均视为可选属性。该表还指示任何默认值,以及属性是否支持NiFi表达式语言

姓名默认值允许值描述
组标识符$ {文件名} EnforceOrder可以有多个订购组。 “组标识符”用于确定FlowFile属于哪个组。每个传入的FlowFile都会评估此属性。如果评估结果为空,则FlowFile将被路由到失败。
支持表达式语言:true(将使用流文件属性和变量注册表进行评估)
订单属性 FlowFile属性的名称,其值将用于强制组中FlowFiles的顺序。如果FlowFile不具有此属性,或者其值不是整数,则FlowFile将被路由到失败。
初始订单0当组中的第一个FlowFile到达时,将计算初始目标订单并将其存储在托管状态。之后,EnforceOrder将开始跟踪目标订单并将其存储在状态管理存储中。如果使用了表达式语言,但计算结果不是整数,则FlowFile将被路由到失败,并且初始顺序将一直未知,直到连续的FlowFiles提供有效的初始顺序为止。
支持表达式语言:true(将使用流文件属性和变量注册表进行评估)
最大订单 如果指定,则任何顺序较大的FlowFiles都将失败。对于给定的组,此属性仅计算一次。计算最大顺序后,它将被保留在状态管理存储中,并用于属于同一组的其他FlowFiles。如果使用了表达式语言,但计算结果不是整数,则FlowFile将被路由到失败,并且最大顺序将一直未知,直到连续的FlowFiles提供有效的最大顺序为止。
支持表达式语言:true(将使用流文件属性和变量注册表进行评估)
批次计数1000 EnforceOrder在执行时可以处理的最大FlowFiles数。
等待超时10分钟指示将等待的FlowFiles路由到“超越”关系的持续时间。
无效超时30分钟 指示将非活动组的状态从托管状态清除之前的持续时间。如果在指定的持续时间内没有看到任何新的传入FlowFile,则该组被确定为非活动状态。非活动超时必须长于等待超时。如果FlowFile在其组已被清除之后到达较晚,它将被视为一个全新的组,但是由于预期的先前FlowFiles已经消失,因此将永远与订单不匹配。 FlowFile最终将等待等待超时,并被路由到“已超过”。为避免这种情况,组状态应保持足够长的时间,但是,较短的持续时间将有助于再次重用同一组标识符。

关系:

姓名描述
超越等待前面的FlowFiles的时间长于Wait Timeout并超过这些FlowFiles的FlowFile,将被路由到此关系。
跳过顺序比当前时间短的FlowFile(即到达时间太晚并被跳过)将被路由到该关系。
成功 具有匹配订单号的FlowFile将被路由到该关系。
等待具有不匹配顺序的FlowFile将被路由到该关系
失败没有必需属性或无法计算这些属性的FlowFiles将被路由到此关系

读取属性:

未指定。

写入属性:

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

状态管理:

范围描述
当地的 EnforceOrder在每个订购组中使用以下状态:'<groupId> .target'是正在等待下一个到达的订购号。当具有匹配顺序的FlowFile到达时,或者由于等待超时而导致FlowFile超过正在等待的FlowFile时,目标顺序将更新为(FlowFile.order +1)。 '<groupId> .max是组的最大订单号。 “ <groupId> .updatedAt”是上次更新组顺序时的时间戳。一旦确定一个组为非活动状态,这些受管状态将被自动删除,有关详细信息,请参见“非活动超时”。

受限制的:

此组件不受限制。

输入要求:

该组件需要传入的关系。

系统资源注意事项:

未指定。