当前位置: 首页 > 知识库问答 >
问题:

quarkus和ScheduledExecutorService

贾骏
2023-03-14

Quarkus有一个https://Quarkus.io/guides/scheduler来调度任务。但是,我希望使用scheduledexecutorService。Quarkus允许这样吗?例如,在wildfly中,必须使用ManagedScheduledExecutorService,因为服务器正在管理线程,而不允许用户管理线程。这对Quarkus也有效吗?

共有1个答案

戚成礼
2023-03-14

这是一个SimpleSheduler类

包:包io.quarkus.scheduler.runtime;

https://github.com/quarkusio/quarkus/blob/main/extensions/scheduler/runtime/src/main/java/io/quarkus/scheduler/runtime/simplescheduler.java

为了开发调度程序扩展,他们使用了ScheduleDExecutorService。

下面是一个使用ScheduledExecutorService的已调度任务,

import javax.enterprise.context.ApplicationScoped;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@ApplicationScoped
public class ScheduledExecutorRunnable {

  List<String> list =
        new ArrayList<String>();

    public List<String> get() {
        sheduleTask();
        return list;
    }

     void sheduleTask() {

        ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
        Runnable task2 = () -> list.add("Running task2...");
        task1();
        ses.schedule(task2, 10, TimeUnit.SECONDS);
        task3();
        ses.shutdown();

    }

     void task1() {
        list.add("Running task1...");
    }

     void task3() {
        list.add("Running task3...");
    }

}

演示

import com.knf.dev.Resource.ScheduledExecutorService.ScheduledExecutorRunnable;

import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.List;

@Path("/verify")
public class EndPoint {

    @Inject
    ScheduledExecutorRunnable scheduledExecutorRunnable;

    @GET
    @Path("/sheduler")
    @Produces(MediaType.APPLICATION_JSON)
    public List<String> sheduler() {
        return scheduledExecutorRunnable.get();
    }
}

10s后到达终点

产出:

[“运行任务1...”、“运行任务3...”、“运行任务2...”、“运行任务1...”、“运行任务3...”]

 类似资料:
  • EclipseLink有可能和夸库斯一起使用吗?还是夸库斯太难与Hibernate耦合了? 我们正在选择我们的MP实现的过程中,我们希望尽可能接近参考信息 我在https://quarkus.io/guides/甚至这个论坛上都没有看到太多信息来表明eclipselink也可以与Quarkus一起使用。 任何关于夸库斯为什么与JPA的一个特定的impl(如果是的话)绑得如此紧密的指示也将是受欢迎的

  • 我正在使用Quarkus 1.0.1框架开发一套微服务。我希望使用KeyCloak8.0.1作为我的身份提供程序来保护这些信息。我已经在一个Docker容器中启动并运行了Keycloak,并为我的微服务配置了一个领域和相应的客户机。现在我到了我想保护他们的地步,我遇到了一个问题。 我的REST服务没有为它配置的注释或任何授权要求。这应该意味着,即使我没有经过身份验证,我也能够访问该服务。但是,当我

  • 我正在使用Quarkus(1.3.2.final)开发一个新的REST服务,并试图将Firebase身份验证与Smallrye-Jwt集成,但失败了。 我的第一次尝试是将publicKey.location指向Google的URL,但失败了,因为有两个键,检查签名的正确publicKey取决于jwt“kid”标头值: 有一种方法可以集成Quarkus和Firebase认证?

  • 我有一个安全的微服务正在调用另一个安全的微服务。这两个服务在KeyCloak中都有服务帐户。我如何配置第一个服务在调用第二个服务时自动从keycloak获得访问令牌?这是一个简单的服务到服务通信。Quarkus Rest客户机是否有API来执行此操作?如果没有,我如何使用Vert.x rest客户端来实现这一点?

  • Quarkus 是一个用于编写 Java 应用的云原生、容器优先框架。 特性包括: 容器优先:最小的Java应用程序,最适合在容器中运行 云原生:在 Kubernetes 等环境中采用 12 要素原则。 统一命令式与反应式:在一个编程模型下带来非阻塞和命令式开发风格。 基于标准:Standards-based:基于一些标准和框架(RESTEasy、Hibernate、Netty、Eclipse V

  • 我目前正在使用多个Quarkus服务和Keycloak RBAC开发一个PoC。工作起来就像一个魅力,很容易引导和开始实现功能。 但我遇到了一个我无法解决的问题。想象一下: null 使JWT的持续时间超过当前的30分钟,但这只是推迟了问题并打开了一些安全门 将用户的输入存储在本地存储器中,以便在令牌刷新后进行恢复(我们也会这样做,以避免浪费用户的工作) 在JS中“静默”刷新令牌,而不让用户知道。