我目前正试图将一个Spring Boot应用程序部署到外部Tomcat实例中,但在如何最好地管理某些东西的实例化方面遇到了一些问题。
按照当前的结构,我的代码大致如下:
public class MyClass extends SpringBootServletInitializer{
@Bean
public ThreadPool pool(){
return new ThreadPool();
}
@Bean
public BackgroundThread setupInbox() {
BackgroundThread inbox = new BackgroundThread(pool());
inbox.start();
return inbox;
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyClass.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(MyClass.class, args);
}
}
其中BackgroundThread是一个线程,它正在监听AMQP类型的消息队列以获取新的作业。我知道Spring提供了一些RabbitMQ的方法来执行此操作,但我们没有使用Rabbit,因此这并没有帮助。
部署此*.war文件的整个目的是通过消息传递将某些功能暴露给外部。因此,我的问题是在Spring的生命周期内实例化、启动和销毁BackgroundThread的最佳方法是什么?XML配置?