我一直在研究如何使用Java 8和spring在运行时更改作业的频率.这个问题非常有用,但并没有完全解决我的问题.
我现在可以配置下次执行作业的日期.但是如果将延迟设置为1年,那么我需要在考虑新配置之前等待1年.
我的想法是在配置值发生变化时停止计划任务(所以从另一个类开始).然后在下次执行任务时重新计算.也许有一种更简单的方法可以做到这一点.
这是我到目前为止的代码.
@Configuration
@EnableScheduling
public class RequestSchedulerConfig implements SchedulingConfigurer {
@Autowired
SchedulerConfigService schedulerConfigService;
@Bean
public RequestScheduler myBean() {
return new RequestScheduler();
}
@Bean(destroyMethod = "shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(100);
}
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor());
taskRegistrar.addTriggerTask(
new Runnable() {
@Override public void run() {
myBean().startReplenishmentComputation();
}
},
new Trigger() {
@Override public Date nextExecutionTime(TriggerContext triggerContext) {
Duration d = schedulerConfigService.getIntervalFromDB();
return DateTime.now().plus(d).toDate();
}
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我想做的事情.
@RestController
@RequestMapping("/api/config/scheduler")
public …
Run Code Online (Sandbox Code Playgroud) 我是oracle的新手.我需要在我的数据库中获取预定的作业.
我问道
DBA_SCHEDULER_JOBS,
DBA_SCHEDULER_SCHEDULES, DBA_SCHEDULER_PROGRAMS,
DBA_SCHEDULER_JOB_CLASSES, DBA_JOBS.
Run Code Online (Sandbox Code Playgroud)
但Oracle发出错误
"ORA-00942: table or view does not exist".
Run Code Online (Sandbox Code Playgroud)
当我查询ALL_JOBS和USER_JOBS时,没有检索到任何行.请告诉我应该看哪个表.
我正在尝试为已经创建的命令开发一个cron作业.我对cron的工作全新,所以我真的不知道它是如何工作的.
在控制台中自己尝试命令可以完美地运行.我所需要的只是每24小时执行一次.我正在使用Laravel 4,任何人都可以帮忙吗?
谢谢!
我有一个在Heroku服务器上托管的网站(我是Heroku btw的新手),并且因为它在免费软件包下,它在30米不活动后睡觉,并且当用户点击它时再次投入使用,它需要大约7秒npm run start
成功.
我正在考虑运行一个nodejs工作或者每29米打开一个网站的东西,以便服务器永远不会睡觉,最初,我有这样的事情:
(function wakeup() {
require('open')('https://mywebsite.herokuapp.com', (err) => {
if (err) throw err;
console.log('Woke up!');
setTimeout(wakeup, 1740000); //29m
});
})()
Run Code Online (Sandbox Code Playgroud)
注意:这只是在浏览器中打开它,但不处理关闭它.
如何浏览Redis队列中的所有待处理作业,以便取消具有某个emailAddress-sendTime对的Mailable?
我正在使用Laravel 5.5并拥有一个Mailable,我正在成功使用如下:
$sendTime = Carbon::now()->addHours(3);
Mail::to($emailAddress)
->bcc([config('mail.supportTeam.address'), config('mail.main.address')])
->later($sendTime, new MyCustomMailable($subject, $dataForMailView));
Run Code Online (Sandbox Code Playgroud)
运行此代码时,作业将添加到我的Redis队列中.
我已经阅读过Laravel文档,但仍然感到困惑.
如何取消Mailable(阻止发送)?
我喜欢在我的Laravel应用程序中编写一个网页,这对我来说很容易.
或者也许有一些工具已经让这很容易(也许是FastoRedis?)?在这种情况下,关于如何以这种方式实现这一目标的说明也将非常有用.谢谢!
更新:
我尝试使用FastoRedis浏览Redis队列,但我无法弄清楚如何删除Mailable,例如红色箭头指向此处:
我在 GitHub actions 上有以下工作。我想跳过 macOS x86 配置:有办法做到这一点吗?
build-and-push-native-libraries:
name: Build and push native library on ${{ matrix.os }} ${{ matrix.architecture }}
strategy:
fail-fast: true
matrix:
os: [ubuntu-latest, macOS, windows-latest]
java: [15]
architecture: [x86, x64]
include:
- compiler: gcc
gcc: 8
runs-on: ${{ matrix.os }}
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java }}
architecture: ${{ matrix.architecture }}
- uses: actions/checkout@v2
- if: startsWith(matrix.os, 'ubuntu') == true
name: Change the permissions of the build …
Run Code Online (Sandbox Code Playgroud) 每小时运行一项作业的正确语法是哪一种?
0 0 * * * *
0 0 */1 * * *
还有他们有什么不同?
我想创建一个作业,在经过一段时间后从数据库中删除记录.例如,我在新闻表中有一个字段,Time Stamp
每个月SQL查询就像我的数据库中的预定作业一样运行,并删除时间戳为两个月的新闻.一般来说,我想删除2个月前和更早的新闻,不要让我的桌子成为一张大桌子.我怎么能做到这一点?
我从我的服务器发送推送通知,并希望它只是在后台进程中执行.我已经阅读了Laravel文档,我也了解了数据库驱动程序和其他一些选项.我已经在我的本地机器上使用数据库驱动程序,但有一件事让我烦恼,我要启动后台线程来侦听使用添加到队列中的作业php artisan queue:listen --deamon
.
关键是,它总是通过像'crone'任务一样运行来消耗我的一些资源和内存.我只想在触发推送通知时创建一个新进程,它应该在添加后立即开始执行,之后应该关闭该进程.另一方面,在laravel作业中,我总是需要运行一个我想避免的后台进程,而且我正在使用共享主机,它不允许我在我的服务器上安装"supervisor"来监视我的作业执行.
任何人都可以清除这种含糊之处吗?处理这种情况的更好方法是什么?