https://www.rabbitmq.com/documentation.html
https://blog.csdn.net/hellozpc/article/details/81436980
同一个消息可以被不同消息队列的的消费者实例接收,同一消息在同一个消息队列中只会被一个消费实例消费。
exchange没有存储能力,只负责路由到不同的消息队列。
消息的确认模式:
模式1:自动确认
只要消息从队列中获取,无论消费者获取到消息后是否成功消息,都认为是消息已经成功消费。
模式2:手动确认
消费者从队列中获取消息后,服务器会将该消息标记为不可用状态,等待消费者的反馈,如果消费者一直没有反馈,那么该消息将一直处于不可用状态。
// 同一时刻服务器只会发一条消息给消费者
channel.basicQos(1);
//消费端: 表示使用手动确认模式
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
同时改为手动确认:
// 监听队列,false表示手动返回完成状态,true表示自动
channel.basicConsume(QUEUE_NAME, false, consumer);