拉取任务

实现思路:

  消费任务————————》从redis中的list中pop数据——————》修改数据库的任务

 参数:任务的类型和优先级    pop:取出数据并删除       删除任务&修改任务日志

 /**
     * 按照任务类型和优先级拉取任务
     * @param type
     * @param priority
     * @return
     */
    @Override
    public Task poll(int type, int priority) {
        Task task = null;
        try{
            String key = type + "_" + priority;
            //1、从redis中拉取数据
            String task_json = cacheService.lRightPop(ScheduleConstants.TOPIC + key);
            if(StringUtils.isNotBlank(task_json)){
                task = JSON.parseObject(task_json, Task.class);

                //2、修改数据库信息:删除任务更新日志
                updateDb(task.getTaskId(), ScheduleConstants.EXECUTED);
            }
        }catch (Exception e){
            e.printStackTrace();
            log.error("poll exception");
        }

        return task;
    }

 

posted @ 2023-07-05 09:36  佛系粥米  阅读(7)  评论(0编辑  收藏  举报