Кажется, я теряю сообщения, отправленные в реактор в моем приложении Spring. Я подозреваю, что это связано с тем временем в жизненном цикле контейнера Spring, когда я начинаю создавать сообщения.
В моем конкретном случае использования есть Spring Bean, который выполняет некоторую инициализацию при запуске. Часть этой инициализации включает создание сообщения, которое отправляется в Reactor.
Я подозреваю, что существует проблема с порядком, в котором Spring регистрирует потребителей, и что код инициализации был запущен до того, как потребители были зарегистрированы. Если я запустил код вручную после запуска, например сделать запрос к контроллеру, который вызывает тот же код, что и сообщения, поступающие к потребителю.
Я пробовал различные способы изменения времени в жизненном цикле, в котором запускается код инициализации, например ApplicationListener<ContextRefreshedEvent>
, ApplicationListener<ContextStartedEvent>
, @PostConstruct
, реализация InitializingBean
и так далее. Ни один из этих подходов не работает.
Мои потребители помечаются @ response.spring.annotation.Consumer, а методы - @ response.spring.annotation.Selector. Просто в случае необходимости я использую Spring Boot и автоматически настраиваемый Reactor (@EnableReactor).