【发布时间】:2016-11-13 20:15:54
【问题描述】:
我正在查看 Java 中的 RabbitMQ HelloWorld 示例https://www.rabbitmq.com/tutorials/tutorial-one-java.html
制片人:
ConnectionFactory factory = new ConnectionFactory();
factory.setHost(host);
factory.setPort(Integer.parseInt(port));
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(queueName, false, false, false, null);
channel.basicPublish("", queueName, null, message.getBytes());
System.out.println(" [x] Sent '" + message + "'");
channel.close();
connection.close();
消费者:
ConnectionFactory factory = new ConnectionFactory();
factory.setHost(host);
factory.setPort(Integer.parseInt(port));
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(queueName, false, false, false, null);
System.out.println(" [*] Waiting for messages.");
QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume(queueName, true, consumer);
QueueingConsumer.Delivery delivery = consumer.nextDelivery(1000);
if (delivery != null) {
String message = new String(delivery.getBody());
System.out.println(" [x] Received '" + message + "'");
} else {
System.out.println(" [x] No messages received");
}
有没有办法让我的消费者只接收消息并停止收听?
【问题讨论】:
-
将“consumer.nextDelivery(1000)”保持在一个while循环(无限循环)中,它会继续监听。
标签: java rabbitmq message-queue