King of Bots项目笔记——后端Bot Running System微服务
本文内容单纯为个人学习笔记,目的是总结学习内容,项目是y总的spring框架课,不具有任何参考意义。
创建botrunningsystem微服务
- 将matchingsystem的依赖复制过来。
- 添加依赖
joor-java-8
,可以动态编译java代码。 - 将Main文件改名为BotRunningSystemApplication,添加注解
@SpringBootApplication
,将其修改为springboot的入口函数。 - 实现BotRunningService接口,与相应的controller。
- 创建
RestTemplateConfig
类和SecurityConfig
类,可以直接复制匹配系统的代码。
实现bot代码的运行逻辑
- 将前后端通信的信息都加上
bot_id
这个信息。 - 创建
BotPool
类:继承Tread,重载run()
方法,添加锁ReentraLock和条件变量Condition。实现:如果bot队列是空的,使用条件变量阻塞队列condition.await()
,直到队列不为空,再唤醒队列condition.signalAll()
,消耗这个任务。 - 实现
Consumer
类:继承Tread,重载run()
方法,startTimeout函数,启动run()
一个新的线程,执行join(timeout)
最多等待tmeout秒,到时间执行interrupt()
,终止当前线程。 - 重写
run()
方法:Reflect.compile()
函数可以动态编译一段代码,同段代码只会编译一次,因此使用UUID.randomUUID()
来生成随机字符串,添加到类名后,来实现每次编译不同代码。