【发布时间】:2012-10-08 19:42:05
【问题描述】:
在 JSP 中,当我到达“QueueingConsumer.Delivery delivery = consumer.nextDelivery()”时,页面会卡住加载。消息已被消费,但 jsp 不会加载,也不会出错。请帮忙
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);
out.println(" [*] Waiting for messages. To exit press CTRL+C");
QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume(QUEUE_NAME, true, consumer);
while (true) {
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
out.println(" [x] Received '" + message + "'");
}
【问题讨论】:
-
我看不出那个while循环的出路?
-
正如 fvu 所指出的,请求的处理会卡在你的 while 循环中
-
即使没有 while 循环,页面仍然卡在 QueueingConsumer.Delivery delivery = consumer.nextDelivery();
-
那将是因为没有消息 - nextDelivery() 阻塞直到有
-
谢谢马丁。我在将消息发送到队列后尝试加载页面,但页面仍然无法加载。那么我该如何在页面上显示消息呢?