SpringCloud+quartz 定时提醒系统

SpringCloud+quartz 定时提醒系统

之前通过Springboot做了一个定时查询系统,前几天通过SpringCloud编写了个升级版,功能和之前的差不多,现在来看看吧。

首先需要先关注我的测试号啦,本系统通过微信测试号第三方授权登录,扫描下方二维码即可关注
图片描述

关注之后进入我的测试号点击定时提醒则进入本系统

clipboard.png

既然是使用SpringCloud,那么肯定是要把一个项目分为几个模块来运行啦

clipboard.png

本人还是学生,云服务器只有一台,所以就把这四个模块放在同一台服务器了,勿怪勿怪~

系统分为四个模块

  • Eureka Server 服务注册中心
  • quartz定时提醒服务
  • 用户消费者服务
  • 微信测试号第三方授权以及发送模板消息服务

注:本系统没有运用zuul网关

Eureka Server我就不说了,简单的配置一下就可以直接运用了。

quartz定时提醒呢,就需要quartz这个第三方的库

        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.3.0</version>
        </dependency>

而且还需要一些spring的依赖

quartz有简单任务触发和复杂任务触发,本系统使用的是cron复杂任务触发器定制任务调度

编写一个Job接口实现类

clipboard.png

实现里面的execute方法,该方法是在任务触发时执行,在方法里面写上你要执行的东西。

之后配置scheduler,项目启动的时候创建bean

@Configuration
public class QuartzConfigration {
    /**
     * attention:
     * Details:定义quartz调度工厂
     */
    @Bean(name = "scheduler")
    public SchedulerFactoryBean schedulerFactory() {
        SchedulerFactoryBean bean = new SchedulerFactoryBean();
        // 用于quartz集群,QuartzScheduler 启动时更新己存在的Job
        bean.setOverwriteExistingJobs(true);
        // 延时启动,应用启动1秒后
//        bean.setStartupDelay(5);
        // 注册触发器
//        bean.setTriggers(jobTrigger);
        return bean;
    }
}

创建任务(截取自己写的工具类中的部分内容并加以修改),可以自己写个工具类,以后方便自己调用。

 String event= (String) map.get("eventId");
        String date= (String) map.get("date");
        JobDataMap jobDataMap=new JobDataMap();
        jobDataMap.put("eventId",event);  //将参数传递到Job类中
        jobDataMap.put("date",date);
        JobDetail jobDetail= JobBuilder
                .newJob(MyBean.class)
                .withIdentity(key,"group1")
                .usingJobData(jobDataMap)
                .build();
        CronTrigger cronTrigger = TriggerBuilder.newTrigger()
                .withIdentity(key, "group1")
                .withSchedule(CronScheduleBuilder.cronSchedule(cron))
                .build();
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        log.info("创建事件成功,执行时间为:{}",format.format(scheduler.scheduleJob(jobDetail,cronTrigger)));

创建时间后想要修改的话就需要这么写

 TriggerKey triggerKey=new TriggerKey(eventId,"group1");
        CronTriggerImpl cronTrigger= (CronTriggerImpl) scheduler.getTrigger(triggerKey);
        cronTrigger.setCronExpression(cron);
        scheduler.rescheduleJob(triggerKey,cronTrigger);

在Job实现类里面注入不了Service,那么可以这么做

ConfigurableApplicationContext run = SpringApplication.run(SpringcloudQuartzApplication.class, args);
        EventService eventService = run.getBean(EventService.class);
        MyBean.eventService=eventService;

这个就是quartz模块的部分介绍了。

接下来是用户消费者模块,调用quartz的服务,通过Feign进行调用,比较坑的事情是,Feign的方法参数,只能传递一个对象参数和多个参数,不能同时传递两个对象参数,而且传递对象参数还需要在前面加上注解

 @PostMapping("/update")
    public ResultVO update(@RequestBody(required = false)EventForm eventForm,
                           @RequestParam(name = "id") String id);

Feign中默认使用Ribbon进行负载均衡(虽然本系统没有集群~)

微信第三方授权和发送模板消息就不多说了,就是使用第三方的库进行编写

<dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-mp</artifactId>
            <version>2.8.0</version>
        </dependency>

微信第三方授权的github也贴出来,可以自行去看API,点击这里进入github

项目效果演示

图片描述

图片描述

图片描述

好了,介绍就到这里啦~
有什么问题就发我邮箱提问吧
13427434344@163.com

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值