【问题标题】:How to Design a Spring-boot scheduler as Service, so that other micro-services can use it如何将 Spring-boot 调度器设计为 Service,以便其他微服务可以使用它
【发布时间】:2020-01-20 02:35:05
【问题描述】:

我想使用 spring-boot 将调度程序设计为服务。我的调度器应该是通用的,以便其他微服务可以根据需要使用它。

我尝试了普通的 spring boot 示例。

/** * 此调度程序将每 20 秒运行一次。 */ @Scheduled(fixedRate = 20 * 1000, initialDelay = 5000) 公共无效 scheduleTaskWithInitialDelay() { logger.info("Fixed Rate Task with Initail Delay 20 seconds:: Execution Time - "+dateTimeFormatter.format(LocalDateTime.now())); }

/**
 * This scheduler will run on every 10 Seconds.
 */
@Scheduled(fixedRate = 10* 1000, initialDelay = 5000)
public void scheduleTaskWithInitialDelay1() {
    logger.info("Fixed Rate Task With Initail Delay 10 Seconds:: Execution Time - "+dateTimeFormatter.format(LocalDateTime.now()));
}

【问题讨论】:

  • “我的调度程序应该是通用的,以便其他微服务可以根据需要使用它”是什么意思?
  • @Anil 如果你必须使用 rest api 调用,你有用于那个的 crate 控制器..意味着你必须为此创建 rest api...

标签: spring-boot scheduled-tasks quartz-scheduler


【解决方案1】:

您需要存储其他微服务的请求以在您的持久化中安排某些内容。所以,你有一个微服务请求调度服务的清单,并且有延迟或 cron 或其他东西。

现在,您可以从数据库中读取所有请求的配置并为它们启动调度程序。

当人们选择编写自定义代码时,这是企业应用程序中的常见用例。

您的数据库表应包含所有详细信息 + 如果调度程序达到给定时间该怎么办(将数据/事件推送到某个 URL 或其他内容)。

一些技术细节

您安排的服务应该允许

  • 添加时间表
  • 开始/停止/更新现有计划
  • 调度器到达时间时的回调或其他操作

希望,这会有所帮助。

【讨论】:

    猜你喜欢
    • 2022-12-01
    • 2013-02-12
    • 2016-10-26
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多