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]