我们在运行中如果需要暂停启动容器时可以通过此类KafkaListenerEndpointRegistry来处理。
KafkaListenerEndpointRegistry源码(只解释了核心代码):
public class KafkaListenerEndpointRegistry implements
//当spring销毁bean时执行操作
DisposableBean,
//在Spring加载和初始化所有bean后开启异步线程来管理容器
SmartLifecycle,
//注入ApplicationContext对象
ApplicationContextAware,
//(spring观察者模式体现)
//监听ContextRefreshedEvent事件
ApplicationListener<ContextRefreshedEvent> {
//存放所有listenerContainers线程安全容器
private final Map<String, MessageListenerContainer> listenerContainers =
new ConcurrentHashMap<String, MessageListenerContainer>();
private int phase = AbstractMessageListenerContainer.DEFAULT_PHASE;
//applicationContext 对象
private ConfigurableApplicationContext applicationContext;
//applicationContext 刷新标志位
private boolean contextRefreshed;
//判断该线程是否运行
private volatile boolean running;