package com.ard.sample.component.mqtt; import com.ard.sample.manage.model.param.DeviceQueryParam; import com.ard.sample.manage.service.IDeviceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; /** * @author sean.zhou * @date 2021/11/24 * @version 0.1 */ @Component public class ApplicationBootInitial implements CommandLineRunner { @Autowired private IDeviceService deviceService; /** * Subscribe to the devices that exist in the database when the program starts, * to prevent the data from being different from the pilot side due to program interruptions. * @param args * @throws Exception */ @Override public void run(String... args){ deviceService.getDevicesByParams(DeviceQueryParam.builder().build()) .forEach(device -> { deviceService.subscribeTopicOnline(device.getDeviceSn()); if(StringUtils.hasText(device.getChildDeviceSn())){ deviceService.subscribeTopicOnline(device.getChildDeviceSn()); } }); } }