【问题标题】:Retrieving mulitple messages from a single rabbit MQ queue using java [closed]使用java从单个rabbitMQ队列中检索多条消息[关闭]
【发布时间】:2019-04-14 18:36:08
【问题描述】:

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

我是兔子 mq 的新手。

【问题讨论】:

  • 请看@Gabriele 的回复!不要使用basic.get!您还应该阅读有关 QoS / Prefetch 的内容。
  • @LukeBakken- 使用 basic.get 没有任何问题- 这是一种拉式与推式的方法。许多人发现一种拉式方法可以更好地与他们的消费逻辑相匹配。

标签: java rabbitmq message-queue


【解决方案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);

【讨论】:

    猜你喜欢
    • 2011-01-13
    • 2012-10-21
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    相关资源
    最近更新 更多