apache / apache/rocketmq-spring
RocketMQMessageListenerBeanPostProcessor implements SmartLifecycle start()
- Dominant language
- Java
- Stars
- 2.3k
- Forks
- 943
- PR merge metrics
- No merged PRs in 30d
Description
@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 未能正常执行。
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with RocketMQMessageListenerBeanPostProcessor, especially postProcessAfterInitialization() and start(), and reproduce the logged ordering with Spring Boot 2.7.18 alone and with the listed Spring Cloud Alibaba dependencies. Trace the lifecycle callbacks and registrar calls; done means listener containers are registered before startContainer() runs in both setups.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, spring, spring-boot
- Domain
- backend, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100