Usu*_*sul 9 multithreading background startup worker quarkus
我正在实现 Quarkus 服务器。服务器启动时,应启动一个(永无止境的)后台进程。
@ApplicationScoped我知道我可以使用实现以下功能的 bean
来观察启动事件void onStart(@Observes StartupEvent ev):
但是启动后台进程的最佳方式是什么?有限制吗?在 J2EE 中,不应创建线程,而应使用ManagedExecutorService带有注释方法的 EJB @Asynchronous。
Quarkus 里有类似的东西吗?我只找到了调度程序注释(这很好,但我只想在开始时启动一个进程一次)。
那么我可以只创建线程吗?或者只是把我的无限代码放进去void onStart(@Observes StartupEvent ev)?
谢谢
小智 5
与在 EJB 中一样,您不应该在后台进程中执行此类操作。框架“失控”的此类进程大多数时候会导致非常烦人的问题。
答案是:这取决于你想在这份工作中做什么。
如果您想定期执行任务,您可以使用计时器。
如果你想将其用作异步工作程序,则可以使用消息队列。
通过将 vert.x 集成到 Quarkus 中,这两个任务都可以轻松完成。
使用@ConsumeEvent创建队列,使用
@Inject
EventBus bus;
bus.send("Example message");
Run Code Online (Sandbox Code Playgroud)
发送消息。
使用 @Scheduled 处理常规作业,如本例所示。
如果您需要永久监听某个套接字或文件,那就会变得更加困难。也许websockets在这种情况下会有帮助。
| 归档时间: |
|
| 查看次数: |
10282 次 |
| 最近记录: |