怎么在windows服务器上面创建定时任务

怎么在windows服务器上面创建定时任务,第1张

在Linux上面运行java程序要比在windows上面跑稳定很多,但是总有些情况下我们的程序跑在了windows上面,这就需要我们对windows server有所了解。今天给大家介绍下如何在windows服务器上面创建定时任务来定时执行java程序。

Windows的有点就是可视化,操作简单,下面一步步为大家演示一下。 

1,首先我们在控制面板中找到“管理工具”,如下图所示: 

2,然后我们打开管理工具,找到其中的“任务计划程序”,如下图所示: 

3,打开任务计划程序,如下图所示: 

4,右击选择“创建基本任务”,这个向导很多简单,适合初学者。如下图所示: 

 

第一步写上任务名称就可以了,然后点击next。

5,接下来是设置触发器,就是什么时候执行,如下图所示: 

 

6,下一步我们设置任务执行什么操作,如下图所示: 

我们选择需要执行的bat文件, 

 

“起始于”选项中一定要填写jar文件的路径,否则会报“Error: Unable to access jarfile”的错误。

7,最后点击“完成”就可以成功创建任务了。 

如果需要在某段时间里面循环执行程序,那我们可以修改触发器的执行时间,如下图所示: 

 

这里我们可以设置两个小时内每5分钟执行一次。

这样到点就会执行我们的java程序,我做这个是用于批量处理数据的。

自从JDK1.5之后,提供了 ScheduledExecutorService 代替TimerTask来执行定时任务,提供了不错的可靠性。

Spring Framework 自带定时任务,提供了cron表达式来实现丰富定时任务配置。新手推荐使用 https://cron.qqe2.com/ 这个网站来匹配你的 cron表达式 。

单点的定时服务在目前微服务的大环境下,应用场景越来越局限,所以尝鲜一下分布式定时任务吧。

相较于之前两种方式,这种基于Redis的实现可以通过多点来增加定时任务,多点消费。但是要做好防范重复消费的准备。

将定时任务存放到ZSet集合中,并且将过期时间存储到ZSet的Score字段中,然后通过一个循环来判断当前时间内是否有需要执行的定时任务,如果有则进行执行。

具体实现代码如下:

适用场景如下:

优势是:

默认情况下Redis是不开启键空间通知的,需要我们通过 config set notify-keyspace-events Ex 的命令手动开启。开启之后定时任务的代码如下:

Spring会监听符合以下格式的Redis消息

基于Redis的定时任务能够适用的场景也比较有限,但实现上相对简单,但对于功能幂等有很大要求。从使用场景上来说,更应该叫做延时任务。

场景举例:

优劣势是:

将定时任务作为单独的服务,遏制了重复消费,独立的服务也有利于扩展和维护。

依赖于MySQL,使用相对简单,可多节点部署,通过竞争数据库锁来保证只有一个节点执行任务。没有图形化管理页面,使用相对麻烦。

依赖于Zookeeper,通过zookeeper的注册与发现,可以动态的添加服务器。

依赖于Zookeeper,集群部署,可以动态的添加服务器。可以手动增加定时任务,启动和暂停任务。

国产,依赖于MySQL,基于竞争数据库锁保证只有一个节点执行任务,支持水平扩容。可以手动增加定时任务,启动和暂停任务。

微服务下,推荐使用xxl-job这一类组件服务将定时任务合理有效的管理起来。而单点的定时任务有其局限性,适用于规模较小、对未来扩展要求不高的服务。

相对而言,基于spring task的定时任务最简单快捷,而xxl-job的难度主要体现在集成和调试上。无论是什么样的定时任务,你都需要确保:

中间件可以将服务解耦,但增加了复杂度


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/219058.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-06
下一篇2023-04-06

发表评论

登录后才能评论

评论列表(0条)

    保存