跳到主要内容

流程控制-消息合并

将多个消息流合并为单个消息输出

问题背景

收到来自不同来源的消息,需要将它们合并为一条消息。例如,有三个不同的传感器发布值,并且希望将它们作为单个条目插入数据库

解决方案

为每个消息赋予一个相同唯一的 msg.topic 值,并使用 Join 节点将它们分组为单个消息

示例

combine-msg

示例JSON

[{"id":"ddb4683fb8b32599","type":"inject","z":"e028a121bc4ae061","name":"temperature","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"temperature","payload":"10","payloadType":"num","x":290,"y":2220,"wires":[["45ceb47a74cbc79e"]]},{"id":"45ceb47a74cbc79e","type":"join","z":"e028a121bc4ae061","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"3","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":490,"y":2260,"wires":[["cefaef4f3c119510"]]},{"id":"cefaef4f3c119510","type":"debug","z":"e028a121bc4ae061","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":650,"y":2260,"wires":[]},{"id":"4c2e69701ad23170","type":"inject","z":"e028a121bc4ae061","name":"humidity","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"humidity","payload":"","payloadType":"num","x":280,"y":2260,"wires":[["45ceb47a74cbc79e"]]},{"id":"07b5cacbbbc0dbde","type":"inject","z":"e028a121bc4ae061","name":"pressure","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"pressure","payload":"999","payloadType":"num","x":280,"y":2300,"wires":[["45ceb47a74cbc79e"]]}]

运行结果

点击3个注入按钮,注入三个消息后,消息合并 节点会将这三个消息合并为一个消息输出

combine-msg-result