写了一个 Demo 来消费队列里面的消息,代码如下所示。没使用 while 循环的话,消息会重复消费,一直输出图示的结果
但是使用 while 循环后就正常了,这是为啥啊?
//while (true) {
channel.basicConsume(queue, false, new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
long deliverTag = envelope.getDeliveryTag();
String bodyMsg = new String(body);
System.out.println(bodyMsg + " " + deliverTag);
// 手动 ACK
channel.basicAck(deliverTag, false);
}
});
//}
加了 while 后的结果,就是 OK 的。百度了但是没找到原因
