ActiveMQ-Java-如何一次接收多条消息?

ActiveMQ-Java-如何一次接收多条消息?,java,spring,spring-boot,activemq,messagebroker,Java,Spring,Spring Boot,Activemq,Messagebroker,您好,我已使用以下代码成功设置了消息侦听器: MessageSubscriber.java public class MessageSubscriber { @Autowired MessageReceiver callback; public void subscribe(String topicName) throws JMSException { final ActiveMQConnectionFactory connectionFactory =

您好,我已使用以下代码成功设置了消息侦听器:

MessageSubscriber.java

public class MessageSubscriber {

  @Autowired
  MessageReceiver callback;

  public void subscribe(String topicName) throws JMSException {
    final ActiveMQConnectionFactory connectionFactory =
        MqHelper.createActiveMQConnectionFactory(activeMQEndpoint,
            activeMQUsername, activeMQPassword);

    receiveMessage(connectionFactory, topicName);
  }

  private void receiveMessage(ActiveMQConnectionFactory connectionFactory, String topicName)
      throws JMSException {
    final Connection consumerConnection = connectionFactory.createConnection();

    final Session consumerSession =
        consumerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    final Destination consumerDestination = consumerSession.createTopic(topicName);

    final MessageConsumer consumer = consumerSession.createConsumer(consumerDestination);

    consumer.setMessageListener(callback);

    consumerConnection.start();
  }
}
MessageReceiver.java

public class MessageReceiver implements MessageListener {

  private static Logger logger = LoggerFactory.getLogger(MessageReceiver.class);

  @Override
  public void onMessage(Message message) {
    logger.info("Receiving message!");
    // ... I handle the message here
  }
}
当我处理消息时,我使用一个服务,我必须在不久后获取结果。这通常需要30-40秒。这不是问题,问题是一次只处理一条消息

例如,当5条消息发布到一个主题时,会有1条消息进入,我会看到“Receiving message!”日志,30-40秒就会过去,直到它得到响应。只有在处理完成时,我才能看到下一个“接收消息!”日志。这意味着5条消息大约需要3分钟,而不是不到1分钟

编辑:我应该说我使用的是spring boot,因此MessageReceiver是自动连接的。这意味着它本质上是一个单身汉,这可能是问题所在吗?是否有另一种使用ActiveMQ的方法可以满足我的需要


编辑2:MessageReceiver不再是一个spring引导bean,每次都被实例化,仍然是同一个问题。

我不确定这一点,但这可能会有所帮助,所以您希望消息侦听器同时使用和处理消息?在问题中,它提到了如何配置它(尽管问题是关于一些不同的东西)@fctmolina好的,这是有用的信息。因此,如果我有3个单独的会话/线程订阅同一主题,我可以一次收到总共3条消息。这在一定程度上解决了这个问题,但我希望我能够在单独的会话中接收消息并处理它。因此,我不局限于我最初创建的会话数量,然后我可以在特定时间超过该阈值。看起来我需要做一些研究,但这是一个很好的起点。Thanks@AdrianShum谢谢你的链接,看起来很有希望。我将需要刷我的Java技能,以完成这个哈哈。我将更新我的进度,但可能需要一些时间。