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]

Reply via email to