Events 为RxJava 2.x配置Grails事件总线调度器

Events 为RxJava 2.x配置Grails事件总线调度器,events,grails,rx-java2,Events,Grails,Rx Java2,我们将Grails4.x与rxjava2.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(Execut

我们将Grails4.x与rxjava2.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

有人能帮忙吗?“提前感谢”

通过文件配置Java的
ServiceLoader
,使用其默认构造函数和
Schedulers.io()
调度器。由于scheduler属性是final,因此我认为您可以实现所需的唯一方法是提供自己的实现:

  • 使
    grails-events-rxjava2
    a
    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文档中建议的解决方案