我应该使用哪个处理器将不同的JSON输入组合到一个对象中?

时间:2018-08-06 05:06:29

标签: apache-nifi

enter image description here

我想设置一个数据流,该数据流接受多个JSON输入,并将它们组合为具有多个属性的单个JSON对象(我目前正在使用一些GenerateFlowFile处理器来生成输入),然后发送数据每10秒钟通过PublishMQTT处理器。

输入以不同的时间间隔(1-5秒)进入,示例如下:

  • {“温度”:60}

  • {“压力”:30}

我想将传入的数据编译成一个对象,即 {“温度”:60,“压力”:30} ,然后再将其发送到PublishMQTT处理器。

此外,如果在发送消息之前进入了具有相同属性的新鲜数据,则应在同一对象中更新属性,而不是排队。例如,如果输入新数据 {“压力”:150} ,则输出对象应先更新为 {“温度”:60,“压力”:150} 。通过MQTT发送出去

我猜我将需要一个处理器(请参阅附件中的蓝色圆圈),但是我不确定哪个处理器可以执行我所描述的操作。

2 个答案:

答案 0 :(得分:2)

实际上没有提供可以执行此操作的处理器,因为它需要一些数据知识。您将必须实现自定义处理器或使用ExecuteScript。

答案 1 :(得分:0)

您可以使用wait-notify来使流文件等待另一个,如本例所示:

https://pierrevillard.com/2018/06/27/nifi-workflow-monitoring-wait-notify-pattern-with-split-and-merge/comment-page-1/

请注意,该链接只是一个示例,您的用例有所不同,必须根据您的要求进行更改。

然后,您可以将信息合并到一个流文件中,并使用EL生成新的json值。