我们正在使用带有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属性是最终的,我认为你能实现你想要的唯一方法就是提供你自己的实现:
-
将
grails-events-rxjava2
设为compileOnly
依赖项,否则会同时找到RxEventBus
和YourEventBus
,从而导致错误。 -
org.grails.events.rxjava2.RxEventBus
:子类class YourEventBus extends RxEventBus { YourEventBus() { super(Schedulers.computation()) //or whatever } }
-
在
src/main/resources/META-INF/services/grails.events.bus.EventBus
文件中注册您的自定义实现。