【发布时间】:2020-07-03 20:00:34
【问题描述】:
当 Spring Cloud Config Server 无法解析我们的 YAML 配置文件时,我正在尝试侦听 ApplicationFailedEvent。发生这种情况时,我想发出应用程序警报。我已经使用 Annotation 注册了所有 ApplicationFailedEvent 类型:
@Component
public class ApplicationFailedEventListener {
private static final Logger LOGGER =
LoggerFactory.getLogger( ApplicationFailedEventListener.class );
@EventListener
public void handleContextRefreshEvent( ContextStartedEvent ctxStartEvt) {
System.out.println("Context Start Event received.");
}
@EventListener( ApplicationFailedEvent.class )
public void handleApplicationFailedEvent( ApplicationFailedEvent event ) {
LOGGER.info( "Received event: {}", event );
}
}
使用界面
public class SpringBuiltInEventsListener implements ApplicationListener<SpringApplicationEvent>,
ApplicationContextAware {
...
}
并将侦听器添加到 SprintApplication:
@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@EnableConfigServer
@EnableDiscoveryClient
@EnableTask
public class SpringCloudConfigServerApplication {
private static final Logger LOGGER =
LoggerFactory.getLogger( SpringCloudConfigServerApplication.class );
public static void main( String[] args ) {
SpringApplication springApplication =
new SpringApplication( SpringCloudConfigServerApplication.class );
springApplication.addListeners(( ApplicationFailedEvent event)->{
System.out.println("Executing ApplicationFailedEvent...");
});
springApplication.addListeners( new CustomEventHandler() );
springApplication.addListeners(new SpringBuiltInEventsListener());
ConfigurableApplicationContext context = springApplication.run( args );
}
}
但我的监听器永远不会被 ApplicationFailedEvent 调用。它确实会为所有其他 SpringApplicationEvent 调用。
如何处理 Spring Cloud Config Server 发送的 ApplicationFailedEvent?似乎当它发送它时,SimpleApplicationEventMulticaster.multicastEvent() 中的侦听器列表为空???
感谢任何帮助。
【问题讨论】:
标签: spring server cloud config