gpt4 book ai didi

java - 轮询 Java EE 后台任务状态 - 如何?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:19 26 4
gpt4 key购买 nike

我目前正在开发一个需要导入数据并进行一些处理的网络应用程序。这可能需要一些时间(可能在“几分钟”范围内,一旦数据集增长),所以我们在后台运行它 - 现在是时候在前端显示状态,而不是拖尾日志文件:)

前端使用 Angular,连接到 REST 端点 (JAX-RS) 调用 EJB 中的服务,通过 JPA 进行持久化。在 JBoss EAP 6.4/AS 7.5 (EE6) 中运行。标准的东西,但这是我第一次处理 Java EE。

关于查询状态,定期轮询 REST 端点很好——我们不需要像 websockets 这样花哨的东西。不过,我们确实需要支持多个后台作业,以及由运行状态(运行/完成/错误)、进度和错误列表组成的信息。

所以,我目前有两个问题:

1) 是否有比调用@Asynchronous EJB 方法更适合启动后台任务的方法?

2) 我有哪些选项可以跟踪后台任务,哪个选项最合适?

我的第一个想法是保留一个 HashMap,但很快就变成了太多手动(而且看起来很脆弱)的代码,并且存在并发性和生命周期问题 - 我不想重新发明轮子。安全的选择似乎是 JPA 坚持它,但对于易变的状态信息来说,这似乎有些笨拙。

我显然不是第一个遇到这些问题的人,但我的 google-fu 似乎现在还欠缺 :)

最佳答案

可以使用 @Asynchronous 或使用 JMS @MessageDriven 启动任务

来自 java-ee-7 ManagedExecutorService也是一种选择。

然后任务将更新自己存储在 ConcurrentHashMap 中的状态在 @Singleton EJB 中。

如果您在集群环境中,使用 JPA 可以更好地存储任务状态,因为 @Singleton 不适用于整个集群

关于java - 轮询 Java EE 后台任务状态 - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30789508/

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