上行SDK使用说明
1.1 添加依赖
外部用户下载jar包引入
内部用户在内网仓库搜索坐标:
<dependency>
<groupId>com.seewo.iot.platform</groupId>
<artifactId>seewo-iot-platform-handler-boot-starter</artifactId>
<version>${seewo-iot-platform-handler-boot-starter.version}</version>
</dependency>
1.2 修改配置文件
此SDK是一个spring-boot-starter,配置添加方式同spring-boot应用。
1.2.1 公共配置
下述不同的协议配置均包含此公共配置属性
# 配置methodHandler
# 产品key,在IoT管理平台上创建产品后可查看到
mis.frame.protobuf.registration.productKey=${productKey}
# 项目名,值具体项目中自行更改
mis.frame.protobuf.registration.project=${application.name}
inner
1.2.2 dubbo方式配置若使用Dubbo RPC通道,则在项目配置文件中添加以下配置,其中示例值作参考:
# IoT管理平台的规则配置参考此处,其中name和method固定
# 示例:{"name":"com.seewo.iot.platform.handler.protocol.dubbo.IotPlatformAppDemoDubboAdapter", "method":"upCommunication"}
#可不填,如果填写在规则配置中,需要对应配置
mis.frame.protobuf.registration.dubbo.group=seewo-iot-demo-group
#可不填,如果填写在规则配置中,需要对应配置
mis.frame.protobuf.registration.dubbo.version=1.0.0
#此配置是开发环境的IP和端口,不同的环境配置不同的IP和端口即可
spring.dubbo.registry.address=zookeeper://172.18.80.56:2181
#seewo-iot-demo-service是demo值具体项目中自行更改,建议和mis.frame.protobuf.registration.project相同
spring.dubbo.application.name=iot-remote-service
1.2.3 RabbitMQ方式配置
若使用RabbitMQ通道,则在项目配置文件中添加以下配置,其中示例值作参考:
# ProtoBufRabbitmqMapping, IoT管理平台的规则配置和此处一致
mis.frame.protobuf.registration.rabbitmq.ip=x.x.x.x
mis.frame.protobuf.registration.rabbitmq.port=5672
mis.frame.protobuf.registration.rabbitmq.user=${user}
mis.frame.protobuf.registration.rabbitmq.pwd=${password}
mis.frame.protobuf.registration.rabbitmq.vhost=${vhost}
mis.frame.protobuf.registration.rabbitmq.queue=queue_up_iot-platform-app-demo
mis.frame.protobuf.registration.rabbitmq.exchange-name=exchange_up_iot-platform-app-demo
1.2.4 RocketMQ方式配置
若使用RocketMQ通道,则在项目配置文件中添加以下配置,其中示例值作参考:
mis.frame.protobuf.registration.rocketmq.namesrv-addr=172.18.70.50:9876;172.18.70.49:9876
mis.frame.protobuf.registration.rocketmq.topic=SeewoIotDemoTopic
mis.frame.protobuf.registration.rocketmq.tag=SeewoIotAppDemoTag
mis.frame.protobuf.registration.rocketmq.group=SeewoIotDemoGroup
1.2.5 HTTP方式配置
若使用HTTP通道,则在项目配置文件中添加以下配置,其中示例值作参考:
# ProtoBufHttpMapping, IoT管理平台的规则配置为:http://{本机地址}:{http.port}/{http.uri}
# uri默认值 /iot_platform/up_communication,port默认8080
mis.frame.protobuf.registration.http.uri=/iot_platform/up_communication
mis.frame.protobuf.registration.http.port=8081
1.3 对应代码中添加注解
在应用服务的实现功能类加 @ProtoBufMapping
和 @ProtoBufDubboMapping()
注解,示例代码如下:
// 此处为RPC示例,其他协议类似
// function:设备状态上报,包括:ONLINE、OFFLINE、RECONNECT
@ProtoBufDubboMapping(value = "thing.status.update")
@Component
public class DeviceStatusHandler implements MessageHandler<Map<String, Object>, Void> {
@Override
public ResponseDataDto<Void> handle(UpDataReqDto<Map<String, Object>> upDataReqDto) {
log.info("开始处理设备状态, {}", upDataReqDto);
try {
Map<String, Object> params = upDataReqDto.getParams();
String status = (String) params.get("status");
//TODO 处理业务逻辑
return new ResponseDataDto<>(SUCCESS);
} catch (Exception e) {
log.error("处理设备状态异常:{} ", e);
return new ResponseDataDto<>(EXCEPTION.getCode(), e.getMessage());
}
}
}
1.4 在IOT平台规则引擎中配置
登录IOT平台在规则引擎模块,选择对应的产品,配置规则信息。
inner
1.4.1 添加RPC通道规则和上面dubbo配置对应的示例如下:
1.4.2 添加RabbitMQ通道规则
和上面rabbitmq配置对应的示例如下:
1.4.3 添加RocketMQ通道规则
和上面rocket配置对应的示例如下:
1.4.4 添加HTTP通道规则
和上面http配置对应的示例如下: