У меня есть приложение SpringBoot
, и я должен подключиться к серверу веб-сокетов для получения сообщений, которые мое приложение затем обрабатывает внутренне, используя встроенный FinitStateMachine
(FSM).
Я хочу запуститьвызов connect () к серверу websocket только после:
- мое весеннее приложение инициализировано
- мой сборщик FSM завершил вызов build ()
Я использовал ApplicationEventPublisher
Spring, чтобы публиковать пользовательское событие (FSMInitializedEvent
) при сборке моего FSM. И код, который инициирует подключение к серверу веб-сокетов, ожидает этого пользовательского события, но я хочу, чтобы код моего разъема веб-сокета ТАКЖЕ ожидал Spring 101 *. Есть ли удобный способ сделать это?
Из сборки моего FSM ():
applicationEventPublisher.publishEvent( new FSMInitializedEvent() );
Внутри моего класса коннектора WebSocket:
@EventListener(FSMInitializedEvent.class) <-- HERE i want to listen for this other event too before progressing - ApplicationReadyEvent.class
public void init() {
// code to initiate the connection
}
Я мог бы программно обработатьэто но ищет какое-то готовое к использованию элегантное решение. Кроме того, мой вопрос отличается от того, что было предложено здесь: Используйте аннотацию @EventListener для нескольких событий в Spring , поскольку я хочу, чтобы мой слушатель ждал , чтобы несколько событий произошло в качестве предварительного условия,прежде чем продолжить.