springframework3中的starter异步类

t3psigkw  于 2021-07-16  发布在  Java
关注(0)|答案(1)|浏览(279)

如何在springfw3中创建一个从部署开始异步运行的类?
我需要做一个“while(true)”在这个类消费Kafka主题,但目前,循环唐´t是异步的,不完成,war文件不完成部署。
我试着在web.xml中使用一个“监听器类”和一个“servlet”。
你知道吗?

eivnm1vs

eivnm1vs1#

侦听器类和servlet部分都属于web规范,与spring无关。特别是它们不受spring管理,不绑定到应用程序上下文生命周期,没有注入等等。它们基本上是由webservlets容器管理和调用的(比如tomcat或jetty,不管您的设置中有什么)
一般来说,您需要了解两个概念:
监听器-这些是在应用程序上下文加载的不同时间被调用的东西(您需要一个在应用程序上下文在“就绪”之前加载时被调用的监听器)-所有bean都被创建、注入,因此您可以从那里开始使用kafka消息。
从技术上讲,监听器是一个bean,所以您可以注入kafka定义(我知道您不使用任何spring-kafka集成并“手动”定义所有内容)。。。 @Async 方法。简而言之,spring可以将这些方法“卸载”到某个线程池中,这样它们就不会干扰启动应用程序上下文的主线程。如果您的spring版本由于某种原因不支持异步方法,那么您可以自己定义一个线程池,然后“提交”一个以无休止的循环执行kafka轮询的类。
因此,总而言之,您需要一个带有async+注解的侦听器来为您的应用程序启用异步支持。
一些可能很方便的链接:
异步教程
侦听器和事件教程

相关问题