繁体   English   中英

如何在实现 Jobrunr ApplyStateFilter 接口的类中注入依赖项?

[英]How to inject dependencies in a class implementing Jobrunr ApplyStateFilter interface?

我正在尝试使用 jobrunr 实现一个项目。 我有一个用例,一旦为作业完成最大重试,就应该触发我编写的服务。 我尝试使用此答案作为参考来实现相同的目标。 一旦作业失败,就会触发过滤器逻辑,但我包含的依赖项(具有我的逻辑)返回空点异常(java.lang.NullPointerException:无法调用“com.project.service.ScheduleHistoryService.someFunc()”因为“ this.service" 为空)。 我可以在我的其他组件中使用@Autowire 注入相同的服务文件。 我在这里做错了什么? 我正在使用 jobrunr 版本 5.1.4。 附件是示例代码的屏幕截图:在此处输入图像描述

只有在 JobRunr 的 Pro 版本中才能在过滤器中注入服务。

我的破解/解决方法是在相关配置中注入服务并将其传递给 CustomRetryFilter 的构造函数:

@Configuration
public class JobRunrConfig {

    @Bean
    public BackgroundJobServer backgroundJobServer(
        StorageProvider storageProvider, JsonMapper jobRunrJsonMapper, JobActivator jobActivator, BackgroundJobServerConfiguration backgroundJobServerConfiguration, JobRunrProperties properties,
        ApplicationEventPublisher applicationEventPublisher) {

    BackgroundJobServer backgroundJobServer = new BackgroundJobServer(
        storageProvider, jobRunrJsonMapper, jobActivator, backgroundJobServerConfiguration);
    backgroundJobServer.setJobFilters(
        Collections.singletonList(
            new CustomRetryFilter(
                applicationEventPublisher,
                properties.getJobs().getDefaultNumberOfRetries(),
                properties.getJobs().getRetryBackOffTimeSeed())));
    backgroundJobServer.start();
    return backgroundJobServer;
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM