Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ActiveMQMessageConsumer仅在5秒内从Java上的主题接收一次消息_Java_Activemq - Fatal编程技术网

ActiveMQMessageConsumer仅在5秒内从Java上的主题接收一次消息

ActiveMQMessageConsumer仅在5秒内从Java上的主题接收一次消息,java,activemq,Java,Activemq,我正在尝试从Java中使用的主题接收数百条消息。我添加了一个MessageListener来处理消息,出于某种原因,我每5秒只收到一条消息。我如何配置它? 我的代码: 好的,问题出在应用程序生成消息和安排主题的部分。更改它并使消费者部分保持不变已解决问题。您发布的代码没有任何问题。好吧,既然你开始连接。它可以在几秒钟内轻松处理数千条消息。肯定还有其他原因——在消息侦听器启动后,您是否真的向主题发布了数百条消息,而不仅仅是1/5秒?是否有非标准的ActiveMQ设置?(代理网络、预定消息或其他消息

我正在尝试从Java中使用的主题接收数百条消息。我添加了一个MessageListener来处理消息,出于某种原因,我每5秒只收到一条消息。我如何配置它? 我的代码:


好的,问题出在应用程序生成消息和安排主题的部分。更改它并使消费者部分保持不变已解决问题。

您发布的代码没有任何问题。好吧,既然你开始连接。它可以在几秒钟内轻松处理数千条消息。肯定还有其他原因——在消息侦听器启动后,您是否真的向主题发布了数百条消息,而不仅仅是1/5秒?是否有非标准的ActiveMQ设置?(代理网络、预定消息或其他消息)?谢谢,@PetterNordlander消息的生成速度足够快,但消息持久性或其他东西可能会让消费者或主题感到不适。回到调查…你坚持备份磁带吗?;-)尝试了你的代码,它可以处理1000个持久的MSG/s。至少所以,是的,看看别处。@PetterNordlander非常感谢您的输入!翻阅所有activemq库代码,却发现它们根本不存在,这有点令人沮丧。所以很高兴有人确认代码是正确的
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

final Topic topic = session.createTopic(myTopic);
final MessageConsumer messageConsumer = session.createConsumer(topic);
messageConsumer.receiveNoWait();

messageConsumer.setMessageListener(message -> {
       if (message != null) {
            try {
                System.out.println("A message received: "
                                           + ((TextMessage) message).getText()
                                           + "\n at: " + Instant.now());
            } catch (JMSException e) {
                throw new RuntimeException(e);
            }
        }
    });
Thread.sleep(500000);