gpt4 book ai didi

Java 调度程序,可与 GraalVM 的 native 镜像编译配合使用

转载 作者:行者123 更新时间:2023-12-02 08:59:36 25 4
gpt4 key购买 nike

我的应用程序位于 Quarkus 框架之上。该应用程序的主要功能 - 用于安排一些任务的简单 REST API(现在它只是将一些消息发布到日志中)。

我使用 Quartz 框架实现的调度功能,通常,当应用程序收到用于调度新事件的 POST 请求时,它会执行两件事:

  • 将请求中的实体保存到数据库;
  • 在 JSON 日期和时间中提到的时间安排 Quartz 作业。

另外,对于应用程序刚刚启动的情况,我创建了从数据库中获取所有实体并为它们安排 Quartz 作业的方法。

但是当我尝试使用 GraalVM 为该应用程序构建 native 镜像时,我遇到了这样的异常:

com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: No instances of sun.security.provider.NativePRNG are allowed in the image heap as this class should be initialized at image runtime.

Google 中的快速搜索给了我 closed issue in GraalVM Github repo也就是说,Quartz 使用 RMI 的 ObjID 进行运行时初始化。由于 Quartz 无法用于需要 GraalVM 进行原生镜像编译的应用程序。

那么 Quarkus 调度程序是否提供了在 Java 代码中调度作业的能力(类似于我使用 Quartz 的实现)?在所有示例和代码片段中,我发现我只能看到方法上 @Scheduled 注释的非常简单的用法(如官方指南中所示)。或者也许还有其他替代工具可以在 Java 中调度任务并与 native 图像编译一起使用?

最佳答案

因此 Quarkus Quartz 扩展(构建于 quarkus-scheduler 之上)确实支持 GraalVM native 镜像。事实是,该 API 不支持编程式调度,并且无法访问底层 Quartz Scheduler 实例。我创建了https://github.com/quarkusio/quarkus/issues/7246解决后一个问题。

So does Quarkus scheduler provides abilities to schedule jobs right in Java code...

是的,请参阅https://stackoverflow.com/a/60275796/2654154 .

关于Java 调度程序,可与 GraalVM 的 native 镜像编译配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60258087/

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