1、记录一个分布式延时订单收货自动处理方案
1、场景分布式订单服务启动了多个,里面有一个自动检查订单是否超期,然后自动收货的功能,在里面有一个调用加积分的功能,所以如果不采用分布式锁就会执行多次
2、采用redisson解决这个问题
<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.10.1</version> </dependency>
3、加配置
@Bean public RedissonClient redissonClient(){ Config config = new Config(); config.useSingleServer().setAddress("redis://"+host+":"+port); config.useSingleServer().setPassword(password); final RedissonClient client = Redisson.create(config); return client; }
4、因为是可重入锁我们不希望释放锁所以代码如下
while (!Thread.currentThread().isInterrupted()) { RLock lock = redissonClient.getLock("lock1"); try { lock.lock(); // System.out.println(Thread.currentThread().getName()+"我在执行"); } catch (Exception e) { e.printStackTrace(); lock.unlock(); }
相关推荐
koushr 2020-06-11
逍遥友 2020-11-20
hellowordmonkey 2020-11-02
gloria0 2020-10-26
zyshappy 2020-08-16
pythonwangjunji 2020-08-16
Equation 2020-08-09
iamjiyu 2020-07-21
winxcoder 2020-07-18
lepton 2020-07-04
ajuan 2020-06-25
tosim 2020-06-24
wghou 2020-06-21
yudiewenyuan 2020-06-21
JessePinkmen 2020-06-14
heimu 2020-06-12
limx 2020-06-11
zghover 2020-06-11