false true false srv 127.0.0.1 = rest_port 9081 = mqtt_srv 127.0.0.1 = continue false 1 1 1 false true false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true false false ${mqtt_srv} 1883 3.1 10 false 10 TCP false conn_ true 300 0 0 true true false { "id": "rule1", "name": "Join规则", "graph": { "nodes": { "device1": { "type": "source", "nodeType": "mqtt", "props": { "datasource": "devices/1/messages", "timestamp": "ts" } }, "device2": { "type": "source", "nodeType": "mqtt", "props": { "datasource": "devices/2/messages", "timestamp": "ts" } }, "watermark": { "type": "operator", "nodeType": "watermark", "props": { "emitters":["device1","device2"], "sendWatermark":true } }, "window": { "type": "operator", "nodeType": "window", "props": { "type": "tumblingwindow", "unit": "ms", "size": 600 } }, "joinop": { "type": "operator", "nodeType": "join", "props": { "from": "device1", "joins": [ { "name": "device2", "type": "inner", "on": "abs(device1.ts - device2.ts) < 200" } ] } }, "mqtt": { "type": "sink", "nodeType": "mqtt", "props": { "server": "tcp://${mqtt_srv}:1883", "topic": "devices/result" } }, "log": { "type": "sink", "nodeType": "log", "props": {} } }, "topo": { "sources": ["device1", "device2"], "edges": { "device1": ["watermark"], "device2": ["watermark"], "watermark":["window"], "window": ["joinop"], "joinop": ["mqtt", "log"] } } }, "options": { "isEventTime": true, "lateTolerance" : 0 } } = ${srv} ${rest_port} /rules POST true false true false Rule rule1 was created Assertion.response_data true 16 ${srv} ${rest_port} /rules/rule1/status GET true false true false $.source_device1_0_records_in_total 0 true false false false true 15 , iot_data_ts.txt false false true shareMode.thread false device_id,ts,temperature,humidity devices/${device_id}/messages 0 false String 1024 {"ts":${ts},"temperature": ${temperature}, "humidity" : ${humidity}} false 100 ${srv} ${rest_port} /rules/rule1/status GET true false true false $.op_window_0_records_in_total 13 true false false false $.sink_mqtt_0_records_out_total 4 true false false false ${srv} ${rest_port} /rules/rule1 DELETE true false true false Rule rule1 is dropped. Assertion.response_data false 16 500 continue false 4 1 1 false true false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true , graph_join_rule_result.txt false false true shareMode.group false ts,temperature,humidity ${mqtt_srv} 1883 3.1 10 false 10 TCP false conn_ true 300 0 0 true devices/result 0 false true number of received messages 1 $[0].temperature ${temperature} true false false false $[0].humidity ${humidity} true false false false $[0].ts ${ts} true false false false