我使用NiFi连接2个系统:
我需要减少Kafka主题中的JSON并将它们推送到适当的表中。这样做没有什么大问题但是......源系统生成了太多事件,目标数据库触发了每个修改的进程。并且其大小不足以处理许多流程。
所以我使用PutSQL Processor
+ Text Processor
+ Update Attribute Processor
背后的ReplaceText Processor
在我的数据库中进行批量更新(例如:如下所示:{ {3}})。
但是这个工作流程允许我根据要放入的许多元素更新我的数据库(我的批量大小)。
我想基于时间定期批量更新。原因是源事件不是线性的,目标数据库不能接受超过5分钟"离开& #34;来自消息来源。所以我需要每隔5分钟安排一次最糟糕的更新。
我现在无法看到如何做到这一点。请问您能告诉我哪种处理器/解决方案?
PS:当然,存在大量更好的解决方案,比如不会在我的目标数据库中的每次提交中触发繁重的流程,而是改变这个"良好的旧系统"现在不负担得起。
干杯, 奥利弗
答案 0 :(得分:2)
我建议串联使用Wait
和Notify
处理器来设置一个“门”,它将流文件保存在队列中,直到Notify
处理器(运行时间表为〜5分钟)发送“触发器”流文件。 Koji Kawamura写了an extensive article documenting this behavior pattern。
答案 1 :(得分:1)
嗯......答案非常简单。你只需要继续"计划"处理器的标签。我现在正在运行1.6.0-SNAPSHOT(顺便说一下,看起来这个选项已经存在了很长时间......我只是没注意到它)并且它为Scheduling提供了设置Cron的能力调度。这完全满足了需求...