Commit 6112355b by tntxia

订阅消息的优化,

parent b9b3b9fa
......@@ -3,14 +3,19 @@ package com.dji.sample.component;
import com.dji.sample.component.redis.RedisConst;
import com.dji.sample.component.redis.RedisOpsUtils;
import com.dji.sample.manage.model.dto.DeviceDTO;
import com.dji.sample.manage.model.entity.DeviceEntity;
import com.dji.sample.manage.service.IDeviceRedisService;
import com.dji.sample.manage.service.IDeviceService;
import com.dji.sdk.cloudapi.device.DeviceDomainEnum;
import com.dji.sdk.cloudapi.device.DeviceSubTypeEnum;
import com.dji.sdk.cloudapi.device.DeviceTypeEnum;
import com.dji.sdk.common.SDKManager;
import com.dji.sdk.config.version.GatewayManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Optional;
/**
......@@ -37,6 +42,27 @@ public class ApplicationBootInitial implements CommandLineRunner {
public void run(String... args) throws Exception {
int start = RedisConst.DEVICE_ONLINE_PREFIX.length();
// 系统启动的时候,把数据库中设备加入订阅中
// 查询现有的设备
List<DeviceEntity> deviceList = deviceService.list();
// 订阅设备
deviceList.stream()
.filter(device -> device.getDomain() == 3)
.forEach(device -> {
DeviceDomainEnum domainEnum = DeviceDomainEnum.find(device.getDomain());
DeviceTypeEnum deviceTypeEnum = DeviceTypeEnum.find(device.getDeviceType());
DeviceSubTypeEnum deviceSubTypeEnum = DeviceSubTypeEnum.find(device.getSubType());
GatewayManager gatewayManager = SDKManager.registerDevice(device.getDeviceSn(), device.getChildSn(), domainEnum,
deviceTypeEnum, deviceSubTypeEnum, device.getVersion(),
deviceRedisService.getDeviceOnline(device.getChildSn()).map(DeviceDTO::getThingVersion).orElse(null)
);
deviceService.subDeviceOnlineSubscribeTopic(gatewayManager);
});
RedisOpsUtils.getAllKeys(RedisConst.DEVICE_ONLINE_PREFIX + "*")
.stream()
.map(key -> key.substring(start))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment