apache / rocketmq-spring

Apache RocketMQ Spring Integration
https://rocketmq.apache.org/
Apache License 2.0
2.09k stars 894 forks source link

RocketMQMessageListenerBeanPostProcessor implements SmartLifecycle start() #672

Open mdjava opened 1 month ago

mdjava commented 1 month ago
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
     Class<?> targetClass = AopUtils.getTargetClass(bean);
     RocketMQMessageListener ann = targetClass.getAnnotation(RocketMQMessageListener.class);
     if (ann != null) {
         RocketMQMessageListener enhance = enhance(targetClass, ann);
         if (listenerContainerRegistrar != null) {
             log.warn("=== 111 ====");
             listenerContainerRegistrar.registerContainer(beanName, bean, enhance);
         }
     }
    return bean;
}

@Override
public int getPhase() {
    return Integer.MAX_VALUE - 2000;
}

@Override
public void start() {
    if (!isRunning()) {
        this.setRunning(true);
        log.warn("=== 222 ====");
        listenerContainerRegistrar.startContainer();
    }
}

1、单独使用spring-boot 2.7.18 registerContainer start 顺序正确可正常使用。 执行顺序 === 111 ==== 先执行 === 222 ==== 后执行 registerContainer 注册正常。 start 正常。 2、主要依赖如下 spring-cloud 2021.0.6 spring-cloud-starter-alibaba 2021.0.6.1 spring-boot 2.7.18 执行顺序 === 222 ==== 先执行 === 111 ==== 后执行 registerContainer 注册正常。 start 未能正常执行。