【问题标题】:How to inject dependencies in a class implementing Jobrunr ApplyStateFilter interface?如何在实现 Jobrunr ApplyStateFilter 接口的类中注入依赖项?
【发布时间】:2022-12-15 07:38:03
【问题描述】:

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

【问题讨论】:

    标签: java spring-boot autowired jobrunr


    【解决方案1】:

    只有专业版的 JobRunr 才有可能在过滤器中注入服务。

    【讨论】:

    • 感谢您的回复,但在文档中,他们提到了类似这样的内容,“当作业成功或失败时,作业过滤器可用于通过额外的业务流程扩展 JobRunr 的功能。它们也存在于免费版本中,但在临”。他们有什么技巧可以实现吗? jobrunr.io/en/documentation/pro/job-filters
    • 我的意思是“他们有什么技巧可以在免费版本中实现它吗?”
    • 我不喜欢创造黑客 :-)
    • @rdehyuss 免费版本中 JobFilter 的意义是否只是为了做非业务的事情,比如日志记录?
    【解决方案2】:

    我的破解/解决方法是在相关配置中注入服务并将其传递给 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;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 2020-10-09
      • 1970-01-01
      • 2014-08-08
      相关资源
      最近更新 更多