最近写了一个 TODO ,正准备作为学期末 Java 的大作业,但不想以作业的要求写东西,便打算提高下实用性自给自足改善下生活习惯_(:з」∠)_。
所以,作为一个合格的 TODO ,应该有一个事件提醒功能,经搜索我就发现 Java 里有个 timertask ,可以作为定时任务,便用这个写了一个每天 6 点检查所有事件并发邮件提醒。
不过 timertask 好像十分不靠谱,经常没有反应了,因为并不知道这个东西到底有没有在跑,所以便到了 6 点执行完事件检查后给我发封邮件,如果没有发送邮件的话我会去重启下程序
http://ww3.sinaimg.cn/mw690/6ad13735jw1eygqpssoetj20u01hcwrn.jpg
每天重启 3 天后我决定弃坑,改用了 quartz ,这个广受好评的开源计时器,然后我第二天 6 点果然收到了事件检查完成的提示邮件,灰常高兴,以为从此离坑走上正轨。
不过两天后,邮件又没了,然后我只好去重启服务器,第二天,还是没有邮件,知道现在,毛音信都没有,都无力吐槽了。
我现在实在很疑惑,到底什么算是计时器的正确使用姿势,计时器经常挂咋办?
1
TangMonk 2015-12-04 20:05:44 +08:00
crontab 不行吗
|
4
letitbesqzr 2015-12-04 20:10:51 +08:00
公司的 quartz 服务 跑了大半年了...都没遇到过问题... 你都定时处理什么任务了?
|
5
odirus 2015-12-04 20:12:56 +08:00
你看一下你的程序为啥异常退出哇。 crontab 非常不错,而且日志也很详细,没必要重复发明轮子。
|
6
HentaiMew 2015-12-04 20:14:01 +08:00
你至少要能确定它是执行了但是中途失败了,还是没执行... 还有定时的表达式是什么,贴出来看看
|
7
HypoChen OP |
9
HypoChen OP @letitbesqzr 就是检查所有事件,满足条件后调用 javax.mail 发邮件( SUN 的包),其实 quartz 中的 job 并没有直接发邮件,而是 new 了一个线程专门用来发邮件。在用 timertask 倒是会遇到包括网络超时在内的各种问题都会导致定时任务中断,但 quartz 好像没有这么一说,也是很奇怪
@odirus 之前没有考虑到这种实现,回宿舍研究下 @HentaiMew 突然想到居然没有执行日志, 2333 ,只是在所有事件检查完发个邮件提醒。因为是每天六点执行,表达式是"0 0 6 * * ?" |
10
letitbesqzr 2015-12-04 20:31:15 +08:00
@skydiver 反正比 php 好!
|
12
iminto 2015-12-04 21:04:52 +08:00
谁现在还用 timertask 这个啊,早过时了。用 ScheduledExecutorService
|
14
raysmond 2015-12-04 21:09:40 +08:00
crontab 谁说不行? crontab 里面可以执行其他命令啊,我经常执行 bash, ruby, python 的脚本。非要用 java 的话, cron 任务里执行一个你的 java 程序不就行了?
|
15
cch123 2015-12-04 21:13:56 +08:00 via iPad
这个帖子怎么这么欢乐,在 crontab 里执行什么程序都可以
|
16
Ouyangan 2015-12-04 21:59:53 +08:00
ScheduledExecutorService 我给满分
|
17
ooTwToo 2015-12-04 22:04:29 +08:00
ScheduledExecutorService 可以的
|
18
ryd994 2015-12-05 05:34:30 +08:00 via Android
@HypoChen 0 6 * * * 分时日月星
另外程序不需要管发邮件的事情,设置好 crond , crond 会把程序输出直接发邮件。(所以不需要的部分 >/dev/null 很重要) |
19
HypoChen OP |
20
ryd994 2015-12-05 13:23:46 +08:00 via Android
@HypoChen NO 是把程序本身的逻辑做成脚本(判断事件,判断复杂条件之类的)结果直接 echo 。 crond 会捕捉一切输出,如果有任何输出,就会安装配置发一封邮件。你先查怎么让 cron 发邮件到你的邮箱,然后自己试一下就明白了
|
21
honam 2015-12-07 19:20:28 +08:00
你都不看一下日志为啥挂
|
22
tryfinally 2015-12-09 16:42:56 +08:00
crontab 任务失败怎么自动恢复?
|
23
SparkMan 2015-12-22 10:02:26 +08:00
|
25
TangMonk 2015-12-22 14:03:01 +08:00
|
27
ooTwToo 2016-01-04 14:10:26 +08:00
楼主这个开源了么 我想看看。
|
28
win7pro 2019-08-23 09:40:18 +08:00
提醒用喵提醒,直接 http 跨平台
|