You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gojobs/jobs_gorm_lock_id.go

25 lines
1.2 KiB

2 years ago
package gojobs
import (
"context"
"fmt"
"go.dtapp.net/gojobs/jobs_gorm_model"
2 years ago
"go.dtapp.net/gotime"
2 years ago
"time"
)
// LockId 上锁
func (j *JobsGorm) LockId(ctx context.Context, info jobs_gorm_model.Task) (string, error) {
2 years ago
return j.lockClient.Lock(ctx, fmt.Sprintf("%s%s%v%s%v", j.config.lockKeyPrefix, j.config.lockKeySeparator, info.Type, j.config.lockKeySeparator, info.Id), fmt.Sprintf("已在%s@%s机器上锁成功%v", j.config.insideIp, j.config.outsideIp, gotime.Current().Format()), time.Duration(info.Frequency)*3*time.Second)
2 years ago
}
// UnlockId Lock 解锁
func (j *JobsGorm) UnlockId(ctx context.Context, info jobs_gorm_model.Task) error {
return j.lockClient.Unlock(ctx, fmt.Sprintf("%s%s%v%s%v", j.config.lockKeyPrefix, j.config.lockKeySeparator, info.Type, j.config.lockKeySeparator, info.Id))
}
// LockForeverId 永远上锁
func (j *JobsGorm) LockForeverId(ctx context.Context, info jobs_gorm_model.Task) (string, error) {
2 years ago
return j.lockClient.LockForever(ctx, fmt.Sprintf("%s%s%v%s%v", j.config.lockKeyPrefix, j.config.lockKeySeparator, info.Type, j.config.lockKeySeparator, info.Id), fmt.Sprintf("已在%s@%s机器永远上锁成功%v", j.config.insideIp, j.config.outsideIp, gotime.Current().Format()))
2 years ago
}