消息应答
//自动应答改成false
channel.basicConsume("queue3", false, consumer);
autoAck(第二个参数)这个形参设置为true时是自动确认模式,一旦将消息分发给消费者那么消息就会从内存中删除!
这种情况下,如果消费者挂掉,那么也会丢失一个消息。
设置false那么是手动确认模式,消费者处理完毕后,发送一个消息应答,rabbitMQ就会删除内存中的消息,这样如果消费者挂了,那么该消息不会丢失,而是交给其他消费者。
消息应答默认是false手动确认模式。
消息持久化
现在假如说我们的rabbitMQ挂了,那么rabbitMQ中的消息全会丢失。
发现把第二个参数durable改成true运行程序会报错,因为已经定义了一个queue1的队列,是不允许重新定义的!
channel.queueDeclare("queue1", false, false, false, null);
网友评论