spring - 我的 Spring EventListener 是否可以等待 2 个事件进行?
问题描述
我有一个SpringBoot
应用程序,必须连接到 websocket 服务器才能接收消息,然后我的应用程序使用内置FinitStateMachine
(FSM)在内部处理这些消息。
我想要的是仅在以下情况下才开始对 websocket 服务器的 connect() 调用:
- 我的spring应用程序已经初始化
- 我的 FSM 构建器已完成 build() 调用
在构建 FSM 时,我使用 SpringApplicationEventPublisher
发布自定义事件 ( )。FSMInitializedEvent
并且启动与 websocket 服务器连接的代码等待这个自定义事件,但我希望我的 websocket 连接器代码也等待 Spring 的ApplicationReadyEvent
. 有没有一种巧妙的方法来做到这一点?
从我的 FSM 的 build() 中:
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
}
我可以以编程方式处理这个问题,但要寻找一些准备好使用的优雅解决方案。另外,我的问题与这里的建议不同:在 Spring 中的多个事件上使用 @EventListener 注释,因为我希望我的侦听器在继续之前等待多个事件发生作为先决条件。
解决方案
推荐阅读
- r - 为什么它没有给我最大的输出?
- c# - 如何识别在同一台计算机上始终具有相同 ID 的用户?
- python - 如何根据另一列中的值检索数据框列中的元素并将其存储在列表中
- django - 如何将我的两个 django 模型的特定字段相互链接?
- javascript - 自动化后如何重新渲染组件?
- database - Flask:查询结果未显示在使用 jinja 的网页上(user_data)
- android - 圆形图像视图:空指针异常
- javascript - 如何在没有按钮的情况下控制 React-Bootstrap Dropdown 的可见性?
- c++ - 将通用引用转换为可调用的 void 指针,反之亦然
- sql - 使用局部变量时选项重新编译更快