#events #grails #rx-java2
#Мероприятия #grails #rx-java2
Вопрос:
Мы используем Grails 4.x с плагином RxJava 2.x (grails-event-rxjava2:4.0.0). Мы пытаемся изменить планировщик ввода-вывода по умолчанию на другой. В документации показано, как это сделать для реализации шины событий по умолчанию, но мы не можем изменить ее для 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.
Кто-нибудь может помочь? Заранее спасибо
Ответ №1:
RxEventBus
настраивается с помощью Java ServiceLoader
через 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
файле.
Комментарии:
1. Спасибо! Он также работает для реализации по умолчанию вместо предлагаемого решения документации grails