多个 pod 中的 Quarkus 调度程序(concurrentExecution = SKIP 除外)

问题描述 投票:0回答:2

在 Quarkus 框架中如何安排作业仅在一个 pod 中执行而不是在所有 pod 中运行。我尝试了(concurrentExecution = SKIP),但没有帮助。

仅在多即时应用程序的一个 Pod 中运行作业。

kubernetes quarkus
2个回答
3
投票

来自 Quarkus 指南:https://quarkus.io/guides/scheduler-reference#concurrent_execution

请注意,只有同一应用程序实例内的执行才有效 经过考虑的。此功能不适用于跨集群

所以我想你必须迁移到 Quartz 才能获得开箱即用的集群支持或创建自定义同步方法(例如使用数据库或文件等)。


0
投票

您可以使用

skipExecutionIf
,这样您就可以创建一个
Predicate
类来确保只有一个节点会执行[1]。

或者您可以在谓词类中使用带有 redis[2] 的共享锁。

[1] https://pt.quarkus.io/guides/scheduler-reference#conditional_execution

[2] https://redis.io/docs/latest/develop/use/patterns/distributed-locks/

© www.soinside.com 2019 - 2024. All rights reserved.