在我的项目中,我正在按计划从mongo数据库中读取数据,在每个 new 行上执行一些处理,然后转发到另一个处理器。
我想确保从mongo读取的所有记录均未得到处理,因此我将第二个mongoDB集合用作跟踪表。
我想拥有这样的逻辑:
GetMongo
处理器]中读取GetMongo
中尚不存在记录,则将其插入[PutMongo
] 我的问题是“仅在跟踪表中不存在时继续”步骤。
如果我使用GetMongo
处理器,当没有记录返回时,它似乎终止了流程。返回结果 时,它遵循success
路径,但是无论如何我都想终止它。对于记录和no_records结果,original
路径都是由原始文件触发的,但我认为这不会对我有帮助。
我倾向于使用ExecuteScript
处理器,并且仅通过ECMAScript使用Mongo的db.collection.count()功能,然后可以继续使用它,但理想情况下,我希望有一个更清洁的选项。
答案 0 :(得分:0)
查看了DetectDuplicate
处理器之后,我认为它的缓存性质使其不适合我的目的。
我最终使用maven原型创建了一个自定义处理器来处理此逻辑,该逻辑根据查询是否有重用而分为matched
和unmatched
关系。
链接到原型以创建您自己的处理器-https://mvnrepository.com/artifact/org.apache.nifi/nifi-processor-bundle-archetype