k631583871 opened a new issue, #743:
URL: https://github.com/apache/rocketmq-spring/issues/743

   每条消息都会调用applicationContext.getBean存在性能问题, 是否可以将 applicationContext.getBean 
放到 spring start的时候调用
   
   ```java
   @SuppressWarnings("WeakerAccess")
   public class DefaultRocketMQListenerContainer implements InitializingBean,
      
   //省略部分代码
       public class DefaultMessageListenerConcurrently implements 
MessageListenerConcurrently {
   
           @SuppressWarnings("unchecked")
           @Override
           public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> 
msgs, ConsumeConcurrentlyContext context) {
               for (MessageExt messageExt : msgs) {
                   log.debug("received msg: {}", messageExt);
                   try {
                       long now = System.currentTimeMillis();
                       //频繁调用getBean
                       DefaultRocketMQListenerContainer container = 
applicationContext.getBean(name, DefaultRocketMQListenerContainer.class);
                       container.handleMessage(messageExt);
                       long costTime = System.currentTimeMillis() - now;
                       log.debug("consume {} cost: {} ms", 
messageExt.getMsgId(), costTime);
                   } catch (Exception e) {
                       log.warn("consume message failed. messageId:{}, 
topic:{}, reconsumeTimes:{}", messageExt.getMsgId(), messageExt.getTopic(), 
messageExt.getReconsumeTimes(), e);
                       
context.setDelayLevelWhenNextConsume(delayLevelWhenNextConsume);
                       return ConsumeConcurrentlyStatus.RECONSUME_LATER;
                   }
               }
   
               return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
           }
       }
   
       public class DefaultMessageListenerOrderly implements 
MessageListenerOrderly {
   
           @SuppressWarnings("unchecked")
           @Override
           public ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs, 
ConsumeOrderlyContext context) {
               for (MessageExt messageExt : msgs) {
                   log.debug("received msg: {}", messageExt);
                   try {
                       long now = System.currentTimeMillis();
                       //频繁调用getBean
                       DefaultRocketMQListenerContainer container = 
applicationContext.getBean(name, DefaultRocketMQListenerContainer.class);
                       container.handleMessage(messageExt);
                       long costTime = System.currentTimeMillis() - now;
                       log.debug("consume {} cost: {} ms", 
messageExt.getMsgId(), costTime);
                   } catch (Exception e) {
                       log.warn("consume message failed. messageId:{}, 
topic:{}, reconsumeTimes:{}", messageExt.getMsgId(), messageExt.getTopic(), 
messageExt.getReconsumeTimes(), e);
                       
context.setSuspendCurrentQueueTimeMillis(suspendCurrentQueueTimeMillis);
                       return 
ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT;
                   }
               }
   
               return ConsumeOrderlyStatus.SUCCESS;
           }
       }
   
       public void handleMessage(MessageExt messageExt) throws 
MQClientException, RemotingException, InterruptedException {
       }
   //省略部分代码
   
   }
   ```


-- 
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