You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.3 KiB

5 months ago
  1. package com.qyft.ms.service;
  2. import com.qyft.ms.common.constant.WebSocketMessageType;
  3. import com.qyft.ms.device.model.bo.DeviceStatus;
  4. import com.qyft.ms.device.service.DeviceStatusService;
  5. import jakarta.annotation.PostConstruct;
  6. import lombok.RequiredArgsConstructor;
  7. import lombok.extern.slf4j.Slf4j;
  8. import org.springframework.stereotype.Service;
  9. import java.util.concurrent.Executors;
  10. import java.util.concurrent.ScheduledExecutorService;
  11. import java.util.concurrent.TimeUnit;
  12. @Slf4j
  13. @Service
  14. @RequiredArgsConstructor
  15. public class StatusService {
  16. private final WebSocketService webSocketService;
  17. private final DeviceStatusService deviceStatusService;
  18. // @PostConstruct
  19. public void init() {
  20. ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
  21. executorService.scheduleAtFixedRate(() -> {
  22. try {
  23. DeviceStatus deviceStatus = deviceStatusService.getDeviceStatus();
  24. webSocketService.pushMsg(WebSocketMessageType.STATUS, deviceStatus);
  25. } catch (Exception e) {
  26. if (!executorService.isShutdown()) {
  27. executorService.shutdown(); // 关闭 ScheduledExecutorService
  28. }
  29. log.error("定时推送设备状态异常", e);
  30. }
  31. }, 10, 100, TimeUnit.MILLISECONDS);
  32. }
  33. }