package tech.easyflow.common.cache;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Spring 定时任务 Redis 分布式锁。
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DistributedScheduledLock {

    /**
     * 获取锁使用的 Redis key。
     *
     * @return Redis 锁 key
     */
    String key();

    /**
     * 等待锁的秒数。
     *
     * @return 等待锁的秒数
     */
    long waitSeconds() default 0L;

    /**
     * 锁租约秒数。
     *
     * @return 锁租约秒数
     */
    long leaseSeconds() default 300L;
}
