问题标签 [shedlock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
550 浏览

java - NoClassDefFoundError: net/javacrumbs/shedlock/core/LockProvider

我们尝试开发一个 cron 批处理。我配置了 @SchedulerLock 注释,但这些不起作用。此代码可能适用于超过 1 个节点。我在 Github 中读到 @SchedulerLock 可能与这些工具一起使用,但不起作用。我也试过了,@TryLock 但也有用。我需要帮助来运行这些代码,因为我不知道代码中的故障是什么。谢谢!

运行应用程序的异常是:

0 投票
1 回答
346 浏览

java - ShedLock virsion 4.20.1-计划任务NoClassDefFoundError ClockProvider发生意外错误

我正在将 Shedlock 与 oracle DB 一起使用,我遵循了此文档https://github.com/lukas-krecan/ShedLock 我还在异常后将第 5 列“现在 TIMESTAMP(3) NULL”添加到表中。它是当前运行的唯一实例。

这是我的配置

这是配置好的bean

这是表

)

和调度的启用

这是例外

0 投票
2 回答
158 浏览

spring-boot - ShedLock - 不在 Kubernetes 上执行

我正在使用带有 JDBC 集成的 Shedlock 版本 4.22.0。我有一个配置类

对于执行,我使用注释 @SchedulerLock 例如。

一切都在本地 PC 上完美运行,但是当应用程序部署在 Kubernetes (AKS) 上时,不会触发任何任务。日志是空的。启动后的应用程序什么也不做

我还添加了调试到弹簧配置

没有记录任何内容

0 投票
1 回答
123 浏览

shedlock - Shedlock 和临时停止任务?

在多台服务器上运行多个计划任务时,Shedlock 看起来很棒,但有时,我们也需要短时间或长时间地暂停一些任务。当然,可以使用附加属性/标志来控制每个任务,但我的建议是也为此使用 Shedlock,并为我们希望停止的任务引入逻辑“节点/服务器”,并更新 shedlock 中的行- 锁定该节点的表,并在未来设置一个lockedAt 时间,并将lockUntil 设置为future + 1 秒(因此不会触发超过maxRunning 的时间)。然后它会自动重新开始,或者如果需要,我们可以进入并将时间移到更远的未来。

对 Shedlock 的这种使用有什么想法……聪明还是坏习惯?它仍然用于锁定,只是将作业锁定到逻辑假服务器。

0 投票
1 回答
265 浏览

spring-boot - 如何使用@PostConstruct 仅在一个实例中调用@Scheduled 方法

  1. 有需要按 cron 计划完成的工作
  2. 必须在 spring boot 应用程序启动时执行与作业中相同的逻辑,因此使用 @PostConstruct 方法
  3. 使用 Shedlock,因为它计划在多个实例中运行应用程序

问题是:如何使 @PostConstruct 方法中的逻辑仅在一个实例中调用而不在其他实例中调用?

我的代码示例:

0 投票
2 回答
317 浏览

java - 是否需要设置 LockAtMostFor 和 LockAtLeastFor?

对于一个月执行一次的任务,是否需要设置LockAtMostFor和LockAtMostFor的值,执行时间是几分钟,有几个节点有一个正在运行的服务。将值暴露给 的正确性如何 lockAtLeastFor = "PT1H" lockAtMostFor = "15m"

0 投票
0 回答
59 浏览

spring - Spring Shedlock 使wiremock 服务器无响应

我有一个使用 Spring 的 @Scheduled 注释使用预定作业的 Spring Boot 应用程序。我已经通过 net.javacrumbs.shedlock 添加了@SchedulerLock,由 net.javacrumbs.shedlock:shedlock-provider-jdbc-template 支持集成测试使用wiremock 服务器。添加 SchedulerLock 后,测试变得异常缓慢,我看到以下日志:

当我删除 SchedLock 时,一切正常。知道可能是什么问题吗?

示例代码:

环境:schedlock 版本:4.15.1 Spring boot:2.3.7

谢谢

0 投票
0 回答
181 浏览

spring - Spring Boot:是否有调度程序锁允许多个 Spring 调度程序任务(基于 cron)在锁定期内多次运行?

我有一个 Spring Boot 应用程序,它有一个注释为 @Scheduled(cron = ....) 的 spring 调度程序,因为可以配置应用程序的多个容器,因此可以同时运行应用程序的多个实例。我想采用像 ShedLock 这样的分布式锁,以便在某个时间点只有一个调度程序实例运行。我尝试了 ShedLock,但即使该实例持有锁,它也不允许执行 spring 调度程序的多次运行。这对我来说不是一个可以接受的选择。那么我有什么选择呢?是否有任何分布式锁库可用于实现我的场景?

谢谢JK

0 投票
2 回答
121 浏览

java - 创建一个守护线程,该线程恰好在(可能复制的)Spring Boot 服务的一个实例中运行

我有一个部署在多个实例中的 Spring Boot 服务。我想在其中一个实例中拥有一个连续运行的“守护线程”。如果该实例关闭,线程最终应该(在超时后)在其他实例上变为活动状态。

该服务使用一个通用的 MongoDB 数据库,它原则上可以提供锁定,但我正在寻找能够正确执行此操作的模式或库。

我查看了Shedlock,但它似乎仅适用于持续时间可预测的短期作业,而不是长时间运行的守护线程。

0 投票
0 回答
709 浏览

spring-boot - 如何在 Spring Boot 中使用 Shedlock 释放调度程序的锁?

我创建了一个每 30 秒运行一次的调度程序。 @Scheduled(fixedRateString = "${scheduler.time:30000}")

用于此的 Shedlock 已配置为@EnableSchedulerLock(defaultLockAtMostFor = "PT30S").

我在 Shedlock 表中有一个条目:

lock_until : 2021-07-20 14:53:26.446

locked_at : 2021-07-20 14:53:24.585

调度程序根本没有运行。

我有几个问题:

  1. 锁不应该在 30 秒后释放吗?

  2. 运行调度程序和 Sherlock 的时间是否与 30 秒相同,这会导致问题吗?

  3. 现在我被卡住了,释放锁的方法是什么?我应该从 shedlock 表中删除条目吗?

谢谢。