diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/lock/SyncLockType.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/lock/SyncLockType.java new file mode 100644 index 00000000..6a0137ad --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/lock/SyncLockType.java @@ -0,0 +1,44 @@ +package com.qqchen.deploy.backend.deploy.lock; + +/** + * 同步锁类型枚举 + *
用于跨方法/跨服务协调同步任务,避免并发冲突
+ * + *使用场景:当多个服务/方法需要操作同一资源时,使用相同的锁类型来保证串行执行
+ * + *示例:Jenkins的View、Job、Build同步都会操作JenkinsJob表, + * 因此它们应该使用同一个锁类型 JENKINS_SYNC
+ */ +public enum SyncLockType { + + /** + * Jenkins同步锁 + *用于:syncViews, syncJobs, syncBuilds
+ *锁粒度:externalSystemId
+ */ + JENKINS_SYNC("jenkins-sync"), + + /** + * GitLab/Git仓库同步锁 + *用于:syncGroups, syncProjects, syncBranches
+ *锁粒度:externalSystemId
+ */ + GITLAB_SYNC("gitlab-sync"), + + /** + * K8s同步锁 + *用于:syncNamespaces, syncDeployments
+ *锁粒度:externalSystemId
+ */ + K8S_SYNC("k8s-sync"); + + private final String key; + + SyncLockType(String key) { + this.key = key; + } + + public String getKey() { + return key; + } +}