HeartTask.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package com.tmzn.devicelinkykc.taskQueue;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.tmzn.devicelinkykc.constant.Constant;
  4. import com.tmzn.devicelinkykc.constant.DeviceOnlineStatus;
  5. import com.tmzn.devicelinkykc.constant.RedisConstant;
  6. import com.tmzn.devicelinkykc.entity.Device;
  7. import com.tmzn.devicelinkykc.entity.DeviceStatus;
  8. import com.tmzn.devicelinkykc.entity.param.TransCheck;
  9. import com.tmzn.devicelinkykc.frameMsg.frameType.HeartFrameSend;
  10. import com.tmzn.devicelinkykc.frameMsg.frameType.LoginFrame;
  11. import com.tmzn.devicelinkykc.redis.RedisCache;
  12. import com.tmzn.devicelinkykc.service.DeviceService;
  13. import com.tmzn.devicelinkykc.service.DeviceStatusService;
  14. import com.tmzn.devicelinkykc.socket.DeviceConnectionMsg;
  15. import com.tmzn.devicelinkykc.socket.SocketHandle;
  16. import com.tmzn.devicelinkykc.taskQueue.queue.MsgHeartQueue;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.scheduling.annotation.Async;
  20. import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
  21. import org.springframework.stereotype.Component;
  22. import java.io.IOException;
  23. import java.util.List;
  24. import java.util.Map;
  25. import java.util.Set;
  26. import java.util.concurrent.*;
  27. /**
  28. * @author xp
  29. * @date 2024/3/15
  30. * @explain " 心跳定时任务 "
  31. */
  32. @Component
  33. @Slf4j
  34. public class HeartTask {
  35. @Autowired
  36. private SocketHandle socketHandle;
  37. @Autowired
  38. private DeviceStatusService deviceStatusService;
  39. @Autowired
  40. private MsgHeartQueue msgHeartQueue;
  41. //理解:云快充的心跳30s未收到设备需要重新登录,这里直接拿连接socket的设备上报消息
  42. public void start(){
  43. ScheduledExecutorService scheduler = new ScheduledThreadPoolExecutor(1);
  44. Runnable task = new Runnable() {
  45. @Override
  46. public void run() {
  47. Map<String, DeviceConnectionMsg> deviceConnectionMsgMap = socketHandle.getDeviceConnectionMsgMap();
  48. msgHeartQueue.add(deviceConnectionMsgMap);
  49. }
  50. };
  51. scheduler.scheduleAtFixedRate(task,0,13*1000, TimeUnit.MILLISECONDS);
  52. }
  53. }