Java任务调度之PowerJob分布式任务调度

1、pom.xml引用依赖

 

        <dependency>
            <groupId>tech.powerjob</groupId>
            <artifactId>powerjob-worker-spring-boot-starter</artifactId>
            <version>4.0.1</version>
        </dependency>

2、bootstrap.yml

powerjob:
  worker:
    akka-port: 27778
    app-name: my_test
    server-address: 127.0.0.1:7700
    store-strategy: disk
    max-result-length: 4096
    max-appended-wf-context-length: 4096

3、新建 MemberExpiredScheduled 类文件, 分布式任务调度

package com.my.test.scheduled;

import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.uini.user.entity.UiniUser;
import com.uini.user.mapper.UiniUserMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;

import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.Date;

@Component
public class MemberExpiredScheduled implements BasicProcessor {
    private static final Logger log = LoggerFactory.getLogger(MemberExpiredScheduled.class);
    private static final String DATETIME_FORMATTER = "yyyy-MM-dd HH:mm:ss";
    @Resource
    private UiniUserMapper uiniUserMapper;

    @Override
    public ProcessResult process(TaskContext taskContext) throws Exception {
        log.info("过期更新定时任务触发开始时间: {}", LocalDateTimeUtil.format(LocalDateTime.now(), DATETIME_FORMATTER));
        /*
         * 每天晚上0点1分更新
         * 用户角色: 0-普通用户、1-会员
         * 过期用户更新为普通用户,用户角色从1变为0
         */
        UpdateWrapper<UiniUser> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("vip_stat", 1);
        updateWrapper.lt("vip_expired_time", new Date());
        UiniUser uiniUser = new UiniUser();
        uiniUser.setVipStat((byte) 0);
        uiniUserMapper.update(uiniUser, updateWrapper);
        log.info("过期更新定时任务触发结束时间: {}", LocalDateTimeUtil.format(LocalDateTime.now(), DATETIME_FORMATTER));
        // 返回结果,该结果会被持久化到数据库,在前端页面直接查看,极为方便
        return new ProcessResult(true, "member expired process successfully~");
    }
}

 4、登录PowerJob控制台

任务管理——>新建任务: 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值