在我的 Spring 应用程序中,我似乎丢失了发送到反应器的消息。我怀疑这是由于在 Spring 容器的生命周期中我开始产生消息的时间。
在我的特定用例中,有一个 Spring Bean 在启动时执行一些初始化。此初始化的一部分涉及生成发送到 Reactor 的消息。
我怀疑 Spring 注册消费者的顺序存在问题,并且初始化代码在消费者注册之前已经运行。如果我在启动后手动运行代码,例如向调用相同代码的控制器发出请求,则消息会将其发送给消费者。
我尝试了各种方法来更改初始化代码运行的生命周期中的时间,例如ApplicationListener<ContextRefreshedEvent>
,方法,实现ApplicationListener<ContextStartedEvent>
等。这些方法似乎都不起作用。@PostConstruct
InitializingBean
我的消费者使用@reactor.spring.annotation.Consumer 注释,方法使用@reactor.spring.annotation.Selector 注释。如果相关,我使用Spring Boot 和自动配置的Reactor (@EnableReactor)。