Bot代码的执行

Bot代码的执行
传递路径是关键。可以作为讲述的重点。

// 设置bot队列,接纳bot。涉及生产者消费者模型。手动实现消息队列
        while(true) {
            lock.lock();
            if(bots.isEmpty()) { // 当队列为空。条件变量锁上
                try {
                    condition.await(); // 暂时被阻塞。直到被唤醒,或者结束
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }

// RestTemplate 在模块之间返回传递信息。记得注入模块

        MultiValueMap<String,String> data=new LinkedMultiValueMap<>();
        data.add("user_id",bot.getUserId().toString());
        data.add("direction",direction.toString());
        
        restTemplate.postForObject(receiveBotMoveUrl,data,String.class);

遇到的问题,两个线程botId被覆盖。经过自己的代码对比,发现是Backend出现了问题。但是具体在哪里就不知道了。应该是AB的botId线程不安全,被覆盖。

posted @ 2023-01-17 11:32  安半愚  阅读(82)  评论(0)    收藏  举报