使用java从单个rabbit MQ队列检索多条消息

使用java从单个rabbit MQ队列检索多条消息,java,rabbitmq,message-queue,Java,Rabbitmq,Message Queue,我知道我们可以使用basic.get()从队列中获取一条消息。但是我无法使用它检索队列中的所有消息(可能是10条)。我得到了一些使用basic.consume()的答案,但不确定如何使用它并获取队列中的消息。谁能帮帮我吗 我不熟悉rabbit mq。检索消息的最佳方法是使用basic.consume(),这里有几个示例 但我建议从这里开始: 这是使用basic.consume使用消息的代码: String QUEUE_NAME= "hello" ConnectionFactor

我知道我们可以使用
basic.get()
从队列中获取一条消息。但是我无法使用它检索队列中的所有消息(可能是10条)。我得到了一些使用
basic.consume()
的答案,但不确定如何使用它并获取队列中的消息。谁能帮帮我吗


我不熟悉rabbit mq。

检索消息的最佳方法是使用
basic.consume()
,这里有几个示例

但我建议从这里开始:

这是使用
basic.consume
使用消息的代码:

    String QUEUE_NAME= "hello"
    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("localhost");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();

    channel.queueDeclare(QUEUE_NAME, false, false, false, null);
    System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
    Consumer consumer = new DefaultConsumer(channel) {
    @Override
    public void handleDelivery(String consumerTag, Envelope envelope,
                             AMQP.BasicProperties properties, byte[] body)
      throws IOException {
    String message = new String(body, "UTF-8");
    System.out.println(" [x] Received '" + message + "'");
  }
};
channel.basicConsume(QUEUE_NAME, true, consumer);

请看@Gabriele的回复!不要使用
basic。获取
!您还应该阅读有关QoS/预取的内容。@LukeBakken-使用
basic.get
-这是一种拉对推的方法。许多人找到了一种拉动式的方法来更好地匹配他们的消费逻辑。