我已经安排了ExecuteSQL处理器,该处理器从DB检索速度限制。该速度限制不会经常更改,因此我创建了24小时的时间间隔。但我注意到下一个处理器(例如RouteAttribute)不会存储此速度限制值。对于每个来自Kafka的FlowFile,我想检查FlowFile中的speedlimit值是否超过从DB检索到的speedlimit值。但是,数据库中的值会在24小时内作为FlowFile处理一次,并且无法进行比较。
我有以下流程: 1)从这里我将ExecuteSQL-> ConvertAvroToJson-> EvaluateJsonPath->的速度限制值传递给处理器RoutesAttribute。 2)ConsumeKafka-> EvaluateJsonPath-> RouteAttributes(RouteAtrribute从上述流中获取速度限制,但仅在24小时内获取一次该值。如何将该值永久存储在内存中?)
答案 0 :(得分:3)
根据您的描述,我认为这篇HCC入门指南非常相关: https://community.hortonworks.com/questions/140060/nifi-how-to-load-a-value-in-memory-one-time-from-c.html
总而言之,它利用了UpdateAttribute具有状态功能的事实,并确保仅当从引用表中提取数据时才更新属性。
还有另一种解决方案,如果可以在获取更新的参考值后重新启动nifi,这称为变量注册表,它可以简化一些操作: https://docs.hortonworks.com/HDPDocuments/HDF3/HDF-3.1.1/bk_administration/content/custom_properties.html