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);