dousp commented on issue #558:
URL:
https://github.com/apache/rocketmq-spring/issues/558#issuecomment-1537100647
```
@Component
public class RocketMQTemplateConfig implements BeanPostProcessor,
ApplicationContextAware, SmartLifecycle {
private final Logger logger =
LoggerFactory.getLogger(RocketMQTemplateConfig.class);
private boolean isRunning = false;
private ApplicationContext applicationContext;
@Resource
private RocketMQTemplate rocketMQTemplate;
@Resource(name = "braveTracer")
private Tracer tracer;
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.applicationContext = applicationContext;
}
@Override
public void start() {
isRunning = true;
registerSendHook();
registerConsumerHook();
}
@Override
public void stop() {
}
@Override
public boolean isRunning() {
return isRunning;
}
// 方式一
// @Override
// public Object postProcessAfterInitialization(Object bean, String
beanName) throws BeansException {
// if (bean instanceof RocketMQTemplate) {
// DefaultMQProducerImpl defaultMQProducer = ((RocketMQTemplate)
bean).getProducer().getDefaultMQProducerImpl();
// defaultMQProducer.registerSendMessageHook(new
SleuthTraceIdSendMessageHook(tracer));
// }
// return
BeanPostProcessor.super.postProcessAfterInitialization(bean, beanName);
// }
public void registerSendHook() {
rocketMQTemplate.getProducer().getDefaultMQProducerImpl()
.registerSendMessageHook(new
SendMessageSleuthTraceHook(tracer));
logger.info("producer-container: register hook [{}]",
SendMessageSleuthTraceHook.class.getSimpleName());
}
private void registerConsumerHook() {
GenericApplicationContext genericApplicationContext =
(GenericApplicationContext) this.applicationContext;
Map<String, DefaultRocketMQListenerContainer> containerMap =
genericApplicationContext.getBeansOfType(DefaultRocketMQListenerContainer.class);
containerMap.forEach(
(name, container) -> {
container.getConsumer().getDefaultMQPushConsumerImpl()
.registerConsumeMessageHook(new
ConsumeMessageSleuthTraceHook(tracer));
logger.info("consumer-container: register hook [{}] to
[{}]", ConsumeMessageSleuthTraceHook.class.getSimpleName(), name);
});
}
}
```
**`getDefaultMQPushConsumerImpl`标记过时了,但是没说替代方案**
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]