MsgTranscationQueue.java 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package com.tmzn.devicelinkykc.taskQueue.queue;
  2. import com.tmzn.devicelinkykc.socket.DeviceConnectionMsg;
  3. import com.tmzn.devicelinkykc.taskQueue.runner.MsgTranscationRunner;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.boot.ApplicationArguments;
  7. import org.springframework.boot.ApplicationRunner;
  8. import org.springframework.stereotype.Component;
  9. import java.util.Map;
  10. import java.util.concurrent.ArrayBlockingQueue;
  11. import java.util.concurrent.BlockingQueue;
  12. /**
  13. * @author xp
  14. * @date 2024/3/15
  15. * @explain " "
  16. */
  17. @Component
  18. @Slf4j(topic = "MsgTranscationQueue")
  19. public class MsgTranscationQueue extends Thread implements ApplicationRunner {
  20. private BlockingQueue<Map<String, DeviceConnectionMsg>> freeQueue = new ArrayBlockingQueue(1024);
  21. @Autowired
  22. private MsgTranscationRunner msgTranscationRunner;
  23. public void add(Map<String, DeviceConnectionMsg> object){
  24. try {
  25. freeQueue.put(object);
  26. } catch (InterruptedException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. @Override
  31. public void run() {
  32. while (true){
  33. try {
  34. Map<String, DeviceConnectionMsg> map = freeQueue.take();
  35. msgTranscationRunner.transactionMsg(map);
  36. } catch (Exception e) {
  37. e.printStackTrace();
  38. log.error("执行异常",e);
  39. }
  40. }
  41. }
  42. @Override
  43. public void run(ApplicationArguments args) throws Exception {
  44. this.start();
  45. log.info("处理器启动");
  46. }
  47. }