目前,我们有四个在应用程序启动期间启动的JMS侦听器容器。它们都通过Apache ZooKeeper连接并手动启动。当无法建立与ZooKeeper的连接时,这会成为问题。 (Wicket)应用程序无法启动,即使JMS侦听器不必处于活动状态以使用该应用程序。他们只需要在后台监听消息,保存它们,而cron作业将分批处理它们。
目标:
当前设置:
迄今为止完成的工作:
ApplicationListener<ApplicationReadyEvent>
的类。autoStart
的DefaultMessageListenerContainer
属性设置为false,并在单独的线程中启动onApplicationEvent
中的每个容器。问题:
当然,关于我是否在正确的轨道上的任何评论都会有所帮助。
如果您不在自定义线程中启动它们,则无法完全启动整个应用程序。它不仅仅是Wicket,而且由于对ZooKeeper的阻塞请求,Servlet容器不会将应用程序状态从STARTING更改为STARTED。
另一种选择是对ZooKeeper使用非阻塞请求,但这是由JMS客户端(ActiveMQ)完成的,因此您需要检查它们的文档(ActiveMQ和ZooKeeper)是否支持它。我好几年没用过了,所以我帮不了你。