五、rabbitMQ消息应答(ack)和消息持久化(durable)

1.消息应答(ack)

//关闭自动应答
boolean autoAck=false;
//监听队列
channel.basicConsume(QUEUE_NAME, autoAck, defaultConsumer);
说明:在上一片博客中,我们用到了rabbitMQ的公平分发的时候,关掉了自动应答如上面所示。rabbitMQ是默认开启自动应答的,这样当rabbitMQ将消息发给消费者,就会从内存中将消息删除,这样会带来一个问题,如果消费者未处理完消息而宕机,那么消息就会丢失。所以,我们将自动应答关闭,当rabbitMQ收到消费者处理完消息的回应后才会从内存中删除消息。
2.消息队列持久化(durable)
//消息队列持久化
boolean durable=false;
//声明队列
channel.queueDeclare(QUEUE_NAME, durable, false, false, null);
说明:rabbitMQ默认将消息存储在内存中,若rabbitMQ宕机,那么所有数据就会丢失,所以在声明队列的时候可以声明将数据持久化, 但是如果已经声明了一个未持久化的队列,那么不能修改,只能将这个队列删除或重新声明一个持久化数据。

你可能感兴趣的:(rabbitMQ)