phpcjl
2024-11-26 029af9c4503d6838bddd55a6ecd6b73705ca1522
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.ruoyi.other.distributedservice;
 
import com.ruoyi.common.redis.annotation.DistributedLock;
import com.ruoyi.other.api.domain.TechnicianSubscribe;
import com.ruoyi.other.service.TechnicianSubscribeService;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
 
/**
 * @Desecription: 技师业务分布式锁业务处理
 * 由于service被事务包裹,因此需要单独建立包来存放分布式锁业务,
 * 分布式锁不能在业务方法中执行
 * 事务隔离问题: 如果将分布式锁放在业务方法内部,并且业务方法处于事务中,那么在事务提交之前,分布式锁可能无法释放,导致其他事务无法获取到该锁,从而造成死锁或长时间的阻塞。
 * @Autor: luofl
 * @Date: 2024/11/26 16:50
 */
@Service
public class DistributedTechnicianService {
    @Resource
    private TechnicianSubscribeService technicianSubscribeService;
 
    @DistributedLock(lockNamePre = "#TECHNICIAN_SUBSCRIBE_LOCK", lockNamePost = "#technicianId")
    public void subscribe(TechnicianSubscribe technicianSubscribe,Long technicianId){
        technicianSubscribeService.subscribe(technicianSubscribe);
    }
}