为RxJava 2.x配置Grails事件总线调度程序



我们正在使用带有RxJava 2.x插件的Grails 4.x(Grails-event-rxjava2:4.0.0(。我们正在尝试将默认的Io调度程序更改为不同的调度程序。文档展示了如何为默认事件总线实现做到这一点,但我们不能为RxJava 2 更改它

grails app/conf/spring/resources.groovy

import org.grails.events.bus.*
import java.util.concurrent.*
beans = {
eventBus(ExecutorEventBus, Executors.newFixedThreadPool(5))
}

对于RxJava2,我们应该使用RxJavaPlugins类,但我们不知道如何配置resources.groovy.

有人能帮忙吗?提前感谢

RxEventBus通过src/main/resources/META-INF/services/grails.events.bus.EventBus文件使用Java的ServiceLoader进行配置,使用带有Schedulers.io()调度器的默认构造函数。由于scheduler属性是最终的,我认为你能实现你想要的唯一方法就是提供你自己的实现:

  1. grails-events-rxjava2设为compileOnly依赖项,否则会同时找到RxEventBusYourEventBus,从而导致错误。

  2. org.grails.events.rxjava2.RxEventBus:子类

    class YourEventBus extends RxEventBus {
    YourEventBus() {
    super(Schedulers.computation()) //or whatever
    }
    }
    
  3. src/main/resources/META-INF/services/grails.events.bus.EventBus文件中注册您的自定义实现。

最新更新