gpt4 book ai didi

multithreading - 使用 Quarkus 启动工作线程的正确方法?

转载 作者:行者123 更新时间:2023-12-03 12:46:30 24 4
gpt4 key购买 nike

我正在实现 Quarkus 服务器。在服务器启动时,应该启动一个(永不结束的)后台进程。

我知道我可以用 @ApplicationScoped 观察开始事件bean 实现:void onStart(@Observes StartupEvent ev) .

但是启动后台进程的最佳方式是什么?有限制吗?
在 J2EE 中不应创建线程,而应使用 ManagedExecutorService或带有 @Asynchronous 的 EJB注释的方法。

Quarkus 中有类似的东西吗?我只找到了调度程序注释(这很好,但我只想在开始时启动一次进程)。

那么我可以创建线程吗?或者只是将我的无限代码放入 void onStart(@Observes StartupEvent ev) ?

谢谢

最佳答案

就像在 EJB 中一样,您不应该在后台进程中做这样的事情。此类不受框架“控制”的进程在大多数情况下会导致非常烦人的问题。

答案是:这取决于你想在这份工作中做什么。

如果您想定期执行任务,您可以使用计时器。

如果要将其用作异步 worker ,则可以使用消息队列。

两者都可以通过 vert.x integration 轻松完成。进入夸库斯。

使用@ConsumeEvent 创建队列,使用

@Inject
EventBus bus;

bus.send("Example message");

发送消息。

使用@Scheduled 处理常规工作,例如 this example .

如果您需要永久监听某个套接字或文件,则变得更加困难。也许是 websockets在这种情况下会有所帮助。

关于multithreading - 使用 Quarkus 启动工作线程的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60760290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com