package com.tmzn.devicelinkykc.taskQueue.queue; import com.tmzn.devicelinkykc.socket.DeviceConnectionMsg; import com.tmzn.devicelinkykc.taskQueue.runner.MsgTranscationRunner; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import java.util.Map; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; /** * @author xp * @date 2024/3/15 * @explain " " */ @Component @Slf4j(topic = "MsgTranscationQueue") public class MsgTranscationQueue extends Thread implements ApplicationRunner { private BlockingQueue> freeQueue = new ArrayBlockingQueue(1024); @Autowired private MsgTranscationRunner msgTranscationRunner; public void add(Map object){ try { freeQueue.put(object); } catch (InterruptedException e) { e.printStackTrace(); } } @Override public void run() { while (true){ try { Map map = freeQueue.take(); msgTranscationRunner.transactionMsg(map); } catch (Exception e) { e.printStackTrace(); log.error("执行异常",e); } } } @Override public void run(ApplicationArguments args) throws Exception { this.start(); log.info("处理器启动"); } }