我有一个Spring Boot应用程序,在应用程序启动时开始侦听Azure IOT Hub。它是这样做的:
@EventListener
public void subscribeEventMessages(ContextRefreshedEvent event) {
client
.receive(false) // set this to false to read only the newly available events
.subscribe(this::hubAllEventsCallback);
}
我的问题是,这使用ContextRefreshedEvent
,但实际上我只想在应用程序启动时启动它一次。我还检查了其他方法如何在开始时开始某事,如CommandLineRunner
。
另一方面,如果实现侦听器更标准的东西,如JMS,有特定的注释,如@JmsListener
或提供特定类型的bean。
我的问题是:我可以利用这些更多的消息(订阅)相关机制来启动我的方法吗?
如果我们不想让@EventListener
监听"context refresh"但仅在"上下文开始"时,请(尝试)替换:
ContextRefreshEvent
- 与
ContextStartEvent
…也就是&;sibling class&;正是这种语义上的差异