package com.fdkankan.download.service.impl; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.fdkankan.redis.constant.RedisKey; import com.fdkankan.redis.constant.RedisLockKey; import com.fdkankan.redis.util.RedisLockUtil; import com.fdkankan.redis.util.RedisUtil; import com.fdkankan.common.bean.DownLoadTaskBean; import java.util.List; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; /** *
* 应用启动校验是否有下载任务正在进行,如有过就重新入队头,从新下载 *
* * @author dengsixing * @since 2022/2/22 **/ @Component public class CheckProgressRunnerImpl implements CommandLineRunner { @Autowired RedisUtil redisUtil; @Autowired RedisTemplate redisTemplate; @Autowired RedisLockUtil redisLockUtil; @Override public void run(String... args) throws Exception { //这里考虑到如果是集群部署,可能多个节点启动时,只需要一个节点进来就行了,所以加一个分布式锁 String lockKey = String.format(RedisLockKey.LOCK_SCENE_DOWNLOAD_ING); boolean lock = redisLockUtil.lock(lockKey, RedisKey.EXPIRE_TIME_1_MINUTE); if(!lock){ return; } try { //查询还没下载完毕的场景 List