使用Java从单个Rabbit MQ队列中检索多条消息

时间:2018-11-12 02:53:06

标签: java rabbitmq message-queue

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

我是兔子迷的新手。

1 个答案:

答案 0 :(得分:1)

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

但是我建议从这里开始: https://www.rabbitmq.com/tutorials/tutorial-one-java.html

这是使用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);