问题标签 [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.
java - 将 Shedlock 与 mongo 一起使用时如何解决此编解码器错误
嗨,我正在尝试将 Shedlock 用于 Spring Boot Mongo。文档说它需要 Mongo JAva 3.7.0。我目前正在使用 Spring spring-boot-starter-parent v 2.0.4,它有一个旧版本的驱动程序,所以升级到版本 2.1.0。
下面是我有地方启动锁的代码:
然后我的代码是:
我得到的错误是:
spring - 关于 Spring 4xx 版本的调度器
我的应用程序使用的是 spring 4.0.0。我正在尝试在分布式系统中编写调度程序。我的应用程序在多台服务器上运行,我的数据库也在多台服务器上运行。
我正在努力实现:我的调度程序将仅在一台服务器上运行。
我尝试了两种方法:
分析:制作不同的配置文件并将其部署在任何服务器中。
但我不希望为不同的服务器提供不同的配置文件。
谢洛克
Shedlock 不支持 spring 4xx 版本。
请提出更好的方法
java - 使用 Shedlock 配置 Spring Scheduler 时没有 LockProvider 类型的限定 bean
我正在尝试集成 Shedlock 以使我的 Spring Boot 应用程序上的计划作业在多 pod 部署中无缝运行。
主类如下:
为了使用 Shedlock 配置调度程序,添加了以下类:
MyDbDataSource 类如下:
我的调度程序类如下:
启动应用程序时,我收到以下错误:
我无法理解我在这里缺少什么。
spring - 计划的作业未开始
我一直在尝试在我的 Spring Boot 应用程序上实现 Shedlock,但没有明显的用途,我使用了https://github.com/lukas-krecan/ShedLock上提供的正式指南,请在下面找到我的配置
Maven依赖:
应用程序.java
计划任务:
无论我尝试什么任务都不会首先开始,任何想法
spring - 无法为 Spring @Scheduler 编写单元测试
我在当前的 spring 项目中实现了一个带锁的调度程序,如下所示:
现在我想为这个函数编写单元测试。这里我面临的问题是:我无法模拟第一条语句:LockAssert.assertLocked()
。
java - Java Spring shedlock 失败
我有一个 spring-boot 应用程序,它在生产环境中以 2 个实例运行,导致计划任务运行两次。为了避免我正在尝试使用 shedlock,如此处和此处所解释的,但它没有影响。我已经在使用 MySql 数据库,我在上面添加了一个shedlock
表,如上面两个示例中所述。
我的项目结构如下(部分) -
在我的application.properties
文件中我有这个设置 -
我在AppConfig
课堂上添加了这个注释 -
还有这个豆子——
在ScheduledManager
课堂上我有这个计划任务 -
当我在 2 个实例上本地运行我的应用程序(使用application.properties
文件中的 2 个不同端口)时,查看日志我可以看到任务在两个实例上运行,同时shedlock
表仍然为空。根据故障排除部分的第二项,我似乎错过了一些配置,但我不知道是什么。
任何帮助将不胜感激。
sql-server - 使用 shedlock 在预定时间清除 Spring 批处理作业表的旧记录时出现死锁
我遇到了这个具有挑战性的场景,其中事务在执行批量更新查询时被 Microsfoft sql server 锁定。
我看到了这个错误。
事务(进程 ID 293)与另一个进程在锁资源上死锁,并已被选为死锁牺牲品。重新运行事务。; 嵌套异常是 com.microsoft.sqlserver.jdbc.SQLServerException:事务(进程 ID 293)在锁资源上与另一个进程死锁,并已被选为死锁牺牲品。
我的批量更新查询:
如果超过 7 天,我有 7-8 个表需要清除其数据。现在,在较低环境的情况下,由于数据量低,所以它工作正常。在生产中,每个表中的数据多达 300k 到 500k。在删除这么多记录时,执行 spring jdbc 查询的 shedlock 任务最终陷入死锁。相同操作的 API 工作正常,但在不同时间执行,因此不确定计划任务运行时的负载。
Shedlock表数据:
SCHEDULER_LOCK 2020-10-21 00:00:15 2020-10-21 00:00:00 tomcat-406116080-2-521278230
虽然我给出了 lockAtMostFor=5M ,但看起来 lock_until 显示 15 秒,这很奇怪。这可能是原因吗?因为生产数据量需要 1-2 分钟。
任何建议将不胜感激
编辑:
提前致谢
spring - 无法在 ShedLock 中创建 LockManager bean
我有一个自定义的 ThreadPoolTaskScheduler,我想在我在配置中定义的 LockableTaskScheduler 实例中使用它,如下所示:
我以编程方式实例化动态计划,如下所示:
但是我找不到任何公共实现LockConfigurationExtractor
来创建一个LockConfigurationExtractor
bean。
PS我浏览了源代码和测试用例。但LockConfigurationExtractor
似乎在库包之外没有可访问的公共具体实现。
有没有其他方法来定义/获取DefaultLockManager
bean?
编辑:
实际上,我的主要目标根本不是创建 LockableTaskScheduler。我只想以某种方式安排“可锁定”可运行:
这样当 runnable 被触发时,它就不能在另一个节点上同时运行。(注:业务逻辑中的动态/程序化调度部分是无法避免的ATM)
shedlock - ShedLock - 不执行
我正在使用 shedlock 库 4.20.0。
调度程序的工作是,
它显示 @SchedulerLock 已弃用。
还有春靴课,
当我执行 spring boot 类时,它会触发 shedlock 并在数据库表中创建一条记录,但在日志中我不断得到如下信息,
任何想法将不胜感激?
spring - 如何在 Spring 集成中使用 ShedLock?
我正在结合 Spring Batch 和 Spring Integration,我将 poller 与玉米一起使用:
我知道 Spring Integration JDBC 提供JDBCLockRepository
但我想知道如何使用 ShedLock。