为 RxJava 配置 Grails 事件总线调度程序 2.x
Configure the Grails event bus scheduler for RxJava 2.x
我们正在使用 Grails 4.x 和 RxJava 2.x 插件 (grails-event-rxjava2:4.0.0)。我们正在尝试将默认的 Io 调度程序更改为不同的调度程序。 Documentation 显示了如何针对默认事件总线实现,但我们无法为 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 class,但我们不知道如何配置 resources.groovy。
有人可以帮忙吗?提前致谢
RxEventBus
is configured with Java's ServiceLoader
via a src/main/resources/META-INF/services/grails.events.bus.EventBus
文件,使用其默认构造函数和 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
文件中注册您的自定义实现。
我们正在使用 Grails 4.x 和 RxJava 2.x 插件 (grails-event-rxjava2:4.0.0)。我们正在尝试将默认的 Io 调度程序更改为不同的调度程序。 Documentation 显示了如何针对默认事件总线实现,但我们无法为 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 class,但我们不知道如何配置 resources.groovy。
有人可以帮忙吗?提前致谢
RxEventBus
is configured with Java's ServiceLoader
via a src/main/resources/META-INF/services/grails.events.bus.EventBus
文件,使用其默认构造函数和 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
文件中注册您的自定义实现。