如何让jobrunr在spring控制器/服务中检测计划的后台作业?

oprakyz7  于 2021-07-14  发布在  Java
关注(0)|答案(0)|浏览(413)

我一直在考虑使用jobrunr在我的springmvc应用程序上启动后台作业,因为我非常喜欢它的简单性,以及将它集成到ioc容器中的方便性。
我正在尝试创建一个简单的测试计划作业,每分钟向配置的记录器写入一行文本,但我正在努力找出如何让jobrunr后台作业服务器检测它并将其排队。我没有使用Spring Boot,所以我只是使用通用的 jobrunr maven工件而不是“spring boot starter”。我的设置如下:
pom.xml文件

<dependency>
            <groupId>org.jobrunr</groupId>
            <artifactId>jobrunr</artifactId>
            <version>2.0.0</version>
        </dependency>

应用程序配置.java

@Bean
    public JobMapper jobMapper() {
        return new JobMapper(new JacksonJsonMapper());
    }

    @Bean
    @DependsOn("jobMapper")
    public StorageProvider storageProvider(JobMapper jobMapper) {
        InMemoryStorageProvider storageProvider = new InMemoryStorageProvider();
        storageProvider.setJobMapper(jobMapper);
        return storageProvider;
    }

    @Bean
    @DependsOn("storageProvider")
    public JobScheduler jobScheduler(StorageProvider storageProvider, ApplicationContext applicationContext) {
        return JobRunr.configure().useStorageProvider(storageProvider)
                                                       .useJobActivator(applicationContext::getBean)
                                                       .useDefaultBackgroundJobServer()
                                                       .useDashboard()
                                                       .useJmxExtensions()
                                                       .initialize();
    }

backgroundjobscontroller.java文件

@Controller
public class BackgroundJobsController {
    private final Logger logger = LoggerFactory.getLogger(getClass());
    private @Autowired JobScheduler jobScheduler;

    @Job(name = "Test")
    public void executeJob() {
        BackgroundJob.scheduleRecurrently(Cron.minutely(), () -> logger.debug("It works!"));
        jobScheduler.scheduleRecurrently(Cron.minutely(), () -> logger.debug("It works too!"));
    }
}

正如你所看到的,我尝试了两种方法来启动后台工作 executeJob 方法。问题基本上是让jobrunr检测到这些作业-这只是一个以某种方式触发 executeJob 应用程序启动时的方法?如果是这样,有人知道最简单的方法吗?以前我用过Spring @Scheduled 注解以自动遍历 Service/Controller 在应用程序启动时初始化,所以我希望有一种简单的方法让jobrunr接收我试图创建的计划任务。如果我忽略了一些愚蠢的事情,我道歉。我花了好几个小时尝试不同的东西和阅读文档!
提前谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题