Commit fa300229f8355075a641567bab544ef8c6d97591

Authored by zhangchuanxi
1 parent 1b9eb0a4

重新整理MQ消息定义和格式

Showing 1 changed file with 203 additions and 0 deletions
wisfarm/MQ消息定义v1.1.0.md 0 → 100644
  1 +#控制信文内容#
  2 +######v1.1.0 by zcx 11/14/2017 5:57:56 PM
  3 +
  4 +**1. 文档说明**
  5 +
  6 +在平台内部,有许多地方会使用到MQ来作为信息同步的工具。为了规范webS1、IotAdapter、Task等服务在MQ通讯过程中的消息格式,特编写了本文档。webS1可根据该文档中规定的内容衍生与web端交互的接口,需要的字段可自行增加。
  7 +
  8 +**2. 正文内容**
  9 +
  10 +消息类型分为控制消息、通知消息两大类。MQ通讯时使用Topic Exchange进行数据分发,Routing key的组成规则如下:from.to.dowhat.type。
  11 +
  12 +**2.1 控制消息以及对应Routing key**
  13 +
  14 +控制消息包含:设备控制、传感器控制、触发器控制、流程控制。
  15 +
  16 +- 2.1.1 设备控制
  17 +
  18 + Exchange name:wisfarm.v1
  19 + Queue:webS1.control
  20 + Routing key:webS1.*.ctl
  21 + 消息内容:{"toId":目标设备序列号,"action":控制命令,"msgId":消息Id,"time":命令时间戳,"type":device,"recordId":操作记录Id}
  22 + action:
  23 + stop:设备停止
  24 + restart:设备重启
  25 + start:设备启动
  26 + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1
  27 + time:时间戳
  28 + recordId:操作记录Id
  29 +
  30 +- 2.1.2 传感器控制
  31 +
  32 + Exchange name:wisfarm.v1
  33 + Queue:webS1.control.sensor
  34 + Routing key:webS1.*.ctl.sensor
  35 + 消息内容:{"deviceNo":"设备序列号","regAddr":"传感器寄存器地址","recordId":"操作记录Id","action":控制命令,"value":写入值,"msgId":消息Id,"time":命令时间戳,"type":sensor,"timeout":"命令超时时间"}
  36 + deviceId:设备序列号
  37 + regAddr:寄存器地址
  38 + recordId:操作记录Id
  39 + action:
  40 + open:传感器打开
  41 + close:传感器关闭
  42 + write:向传感器写值
  43 + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1
  44 + time:时间戳
  45 + timeout:命令的超时时间,默认5000毫秒
  46 + 注意:*同组sensor执行的动作必须一致;
  47 + *value(写入值)只在action==write时有用,其他时候可写任意值
  48 +
  49 +
  50 +- 2.1.3 触发器控制
  51 +
  52 + Exchange name:wisfarm.v1
  53 + Queue:webS1.control.strategy
  54 + Routing key:webS1.*.ctl.strategy
  55 + 消息内容:{"toId":触发器Id,"action":控制命令,"msgId":消息Id,"time":命令时间戳,"type":trigger",recordId":操作记录Id}
  56 + action:
  57 + enable:使能开启
  58 + disable:使能关闭
  59 + retry:触发器重试
  60 + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1
  61 + time:时间戳
  62 + recordId:操作记录Id
  63 +
  64 +- 2.1.4 流程控制
  65 +
  66 + Exchange name:wisfarm.v1
  67 + Queue:webS1.control.strategy
  68 + Routing key:webS1.*.ctl.strategy
  69 + 消息内容:{"toId":流程Id,"action":控制命令,"msgId":消息Id,"time":命令时间戳,"type":flow,"recordId":操作记录Id}
  70 + action:
  71 + enable:流程使能开启
  72 + disable:流程使能关闭
  73 + pause:流程暂停
  74 + continue:流程继续
  75 + recover:流程恢复
  76 + stop:流程终止
  77 + execute:流程立即执行
  78 + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1
  79 + time:时间戳
  80 + recordId:操作记录Id
  81 +
  82 +
  83 +**2.2 通知消息**
  84 +
  85 +通知消息用于在多个服务间进行数据同步和传输,并在一定程度上承担着负载均衡的作用。
  86 +
  87 + 1. 平台web端发生编辑事件后,通过MQ告知IotAdapter/Task服务。
  88 + 2. IotAdapter 发送实时数据给LTS
  89 + 3. 平台与Tx800通过MQ进行通讯。
  90 +
  91 +- 2.2.1 平台web端发出通知事件给IotAdapter/Task服务
  92 +
  93 + 2.2.1.1 web端设备配置信息编辑
  94 +
  95 + Exchange name:wisfarm.v1
  96 + Queue:webS1.editEvent
  97 + Routing key:webS1.*.event
  98 + 消息内容:{"srcId":设备序列号,"action":事件,"msgId":消息Id,"time":时间戳,"type":"device","oldId":旧的设备序列号}
  99 + action:
  100 + delete:删除
  101 + cu:createOrUpdate新建/更新
  102 + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1
  103 + time:时间戳
  104 + oldId:当修改设备序列号时,这字段的值为修改前的设备序列号,其他情况为null
  105 +
  106 + 2.2.1.2 web端触发器配置信息编辑
  107 +
  108 + Exchange name:wisfarm.v1
  109 + Queue:webS1.editEvent.strategy
  110 + Routing key:webS1.*.event.strategy
  111 + 消息内容:{"srcId":触发器Id,"action":事件,"msgId":消息Id,"time":时间戳,"type":"trigger"}
  112 + action:
  113 + delete:删除
  114 + create:新建
  115 + update:修改
  116 + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1
  117 + time:时间戳
  118 +
  119 + 2.2.1.3 web端流程控制配置信息编辑
  120 +
  121 + Exchange name:wisfarm.v1
  122 + Queue:webS1.editEvent.strategy
  123 + Routing key:webS1.*.event.strategy
  124 + 消息内容:{"srcId":流程Id,"action":事件,"msgId":消息Id,"time":时间戳,"type":"flow"}
  125 + action:
  126 + delete:删除
  127 + create:新建
  128 + update:修改
  129 + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1
  130 + time:时间戳
  131 +
  132 +
  133 + 2.2.1.4 web端虚拟tx800设备配置信息通知
  134 +
  135 + Exchange name:wisfarm.v1
  136 + Queue:webS1.editEvent
  137 + Routing key:webS1.*.event
  138 + 消息内容:{"srcId":虚拟tx800设备ID,"action":事件,"msgId":消息Id,"time":时间戳,"type":"config"}
  139 + action:
  140 + local:控制权-平台
  141 + plat:控制权-tx800或其他终端
  142 + lock:控制权被锁定
  143 + unlock:控制权未被锁定
  144 + enable:配置数据生效
  145 + disable:配置数据作废
  146 + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1
  147 + time:时间戳
  148 +
  149 + 2.2.1.4 web端虚拟tx800设备映射传感器信息通知
  150 +
  151 + Exchange name:wisfarm.v1
  152 + Queue:webS1.editEvent
  153 + Routing key:webS1.*.event
  154 + 消息内容:{"srcId":tx800传感器id,"action":事件,"msgId":消息Id,"time":时间戳,"type":"config"}
  155 + action:
  156 + analyze_yes:解析对应的平台传感器
  157 + analyze_no:不解析对应的平台传感器
  158 + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1
  159 + time:时间戳
  160 +
  161 +
  162 +- 2.2.2 IotAdapter 通知 LTS
  163 +
  164 + 2.2.2.1 IotAdapter发送传感器实时数据给LTS
  165 +
  166 + Exchange name:wisfarm.v1
  167 + Queue:iot.lts.sensor.data
  168 + Routing key:iot.lts.sensor.data.key.*
  169 + 消息内容:{"sensorId":"传感器id","value":"传感器当前值","online":"在线状态"}
  170 +
  171 +
  172 +- 2.2.3 平台通知tx800事件
  173 +
  174 + 2.2.3.1 平台web发送召唤设备通知到Tx800
  175 +
  176 + Exchange name:wisfarm.v1
  177 + Queue:wisfarm.bridge.tx800.default.queue
  178 + Routing key:wisfarm.bridge.tx800.default.routing.{farmNo}
  179 + 消息内容:{"data":"tx800农场No","time":时间戳,"type":"call_request"}
  180 +
  181 +
  182 +- 2.2.4 tx800通知平台事件
  183 +
  184 + 2.2.4.1 Tx800响应平台召唤
  185 +
  186 + Exchange name:wisfarm.v1
  187 + Queue:tx800.bridge.wisfarm.default.queue
  188 + Routing key:wisfarm.bridge.tx800.default.routing.{farmNo}
  189 + 消息内容:{"data":DeviceDTO,"time":时间戳,"type":"call_request"}
  190 + DeviceDTO:设备对象Array,数据结构:
  191 + [{"farmNo":"农场Mo","deviceId":"设备ID","deviceNo":"设备序列号","deviceName":"设备名称","sensors",SensorDTO}]
  192 + SensorDTO :传感器对象Array,数据结构:
  193 + [{"sensorId":"传感器ID","sensorName":" 传感器名称 ","sensorType":"传感器类型"}]
  194 +
  195 + 2.2.4.2 Tx800写农场信息
  196 +
  197 + Exchange name:wisfarm.v1
  198 + Queue:tx800.bridge.wisfarm.default.queue
  199 + Routing key:tx800.bridge.wisfarm.default.routing.{farmNo}
  200 + 消息内容:{"data":Farm,"time":时间戳,"type":"call_request"}
  201 + Farm:农场对象,数据结构:
  202 + {"farmNo":"农场编号","farmName":"农场名称"}
  203 +
0 \ No newline at end of file 204 \ No newline at end of file