标签: jobs

如何在Spring中使用EnableScheduling注释在运行时重新启动计划任务?

我一直在研究如何使用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)

java jobs spring scheduled-tasks java-8

13
推荐指数
1
解决办法
9479
查看次数

如何列出在我的数据库中运行的预定作业?

我是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时,没有检索到任何行.请告诉我应该看哪个表.

sql oracle privileges jobs

12
推荐指数
1
解决办法
10万
查看次数

如何杀死zsh中的所有后台进程?

在标题中 - 如何杀死zsh中的所有后台进程?

linux jobs background zsh

12
推荐指数
2
解决办法
4450
查看次数

Laravel的Cron Job

我正在尝试为已经创建的命令开发一个cron作业.我对cron的工作全新,所以我真的不知道它是如何工作的.

在控制台中自己尝试命令可以完美地运行.我所需要的只是每24小时执行一次.我正在使用Laravel 4,任何人都可以帮忙吗?

谢谢!

php cron jobs laravel laravel-4

12
推荐指数
1
解决办法
2万
查看次数

避免heroku服务器休眠

我有一个在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)

注意:这只是在浏览器中打开它,但不处理关闭它.

  • 首先,这种解决方法是否合法?
  • 其次,如果是,那么实施此方法的最佳方法是什么?

javascript jobs heroku node.js

12
推荐指数
2
解决办法
8279
查看次数

如何取消Laravel或Redis中的排队作业

如何浏览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,例如红色箭头指向此处: 在此输入图像描述

更新:

请看下面我提供的综合答案.

queue jobs delay redis laravel

12
推荐指数
3
解决办法
1万
查看次数

如何使用 GitHub 操作跳过矩阵配置?

我在 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)

workflow jobs github-actions

12
推荐指数
1
解决办法
5767
查看次数

每小时运行 cron 作业/任务

每小时运行一项作业的正确语法是哪一种?

0 0 * * * *

0 0 */1 * * *

还有他们有什么不同?

cron jobs schedule job-scheduling cron-task

12
推荐指数
1
解决办法
4万
查看次数

如何通过T-SQL在SQL Server 2008中创建预定作业?

我想创建一个作业,在经过一段时间后从数据库中删除记录.例如,我在新闻表中有一个字段,Time Stamp每个月SQL查询就像我的数据库中的预定作业一样运行,并删除时间戳为两个月的新闻.一般来说,我想删除2个月前和更早的新闻,不要让我的桌子成为一张大桌子.我怎么能做到这一点?

sql t-sql jobs schedule

11
推荐指数
1
解决办法
3万
查看次数

laravel队列 - 同步驱动程序如何工作?它是在单独的进程还是主执行线程中执行?

我从我的服务器发送推送通知,并希望它只是在后台进程中执行.我已经阅读了Laravel文档,我也了解了数据库驱动程序和其他一些选项.我已经在我的本地机器上使用数据库驱动程序,但有一件事让我烦恼,我要启动后台线程来侦听使用添加到队列中的作业php artisan queue:listen --deamon.

关键是,它总是通过像'crone'任务一样运行来消耗我的一些资源和内存.我只想在触发推送通知时创建一个新进程,它应该在添加后立即开始执行,之后应该关闭该进程.另一方面,在laravel作业中,我总是需要运行一个我想避免的后台进程,而且我正在使用共享主机,它不允许我在我的服务器上安装"supervisor"来监视我的作业执行.

任何人都可以清除这种含糊之处吗?处理这种情况的更好方法是什么?

php queue jobs multithreading laravel

11
推荐指数
1
解决办法
1万
查看次数