【朝夕??縍abbitMQ消息的持久化優(yōu)先級

歡迎大家閱讀《朝夕Net社區(qū)技術(shù)???br/>
我們致力于.NetCore的推廣和落地,為更好的幫助大家學(xué)習(xí),方便分享干貨,特創(chuàng)此刊!很高興你能成為忠實讀者,文末福利不要錯過哦!
上篇文章介紹了RabbitMQ在使用中的消息確認(rèn);這篇文章繼續(xù)給大家分享、本片文章主要介紹RabbitMQ消息的持久化、消息優(yōu)先級。其實在實際的開發(fā)中,有這樣的一個場景,我們不能絕對避免。
1.消息持久化
其實在前面的文章中已經(jīng)介紹了exchange和queue的持久化,把exchange和queue的durable屬性設(shè)置為true,重啟rabbitmq服務(wù)時(?重啟命令:rabbitmqctl stop_app ;rabbitmqctl start_app?),exchange和queue也會恢復(fù)。我們需要注意的是:如果queue設(shè)置durable=true,rabbitmq服務(wù)重啟后隊列雖然會存在,但是隊列內(nèi)的消息會丟全部丟失。那么怎么實現(xiàn)消息的持久化呢?實現(xiàn)的方法很簡單:將exchange和queue都設(shè)置durable=true,然后在消息發(fā)布的時候設(shè)置persistent=true即可。
下面就直接來看一個案例:如下圖所示

聲明exchange和queue時設(shè)置durable=true,然后執(zhí)行上邊的代碼,傳入一條消息。重啟rabbitmq后,exchange,queue和消息都會恢復(fù)。我們也可以在web管理界面設(shè)置消息持久化,如圖:

這里就需要同學(xué)們按照老師這里的案例配置起來,發(fā)送一條消息、然后重新RabbitMQ服務(wù);然后查看消息;如果持久化,那么消息已然存在;
2.消息優(yōu)先級
我們知道queue是先進先出的?如圖,即先發(fā)送的消息,先被消費。

但是在具體業(yè)務(wù)中可能會遇到要提前處理某些消息的需求,如一個常見的需求:普通客戶的消息按先進先出的順序處理,Vip客戶的消息要提前處理。消息實現(xiàn)優(yōu)先級控制的實現(xiàn)方式是:首先在聲明queue是設(shè)置隊列的x-max-priority屬性,然后在publish消息時,設(shè)置消息的優(yōu)先級等級即可。為了演示方便,約定所有vip客戶的信息都以vip開頭,請看下圖中的代碼實現(xiàn):如圖,請配合查看;


把生產(chǎn)者和消費者都運行起來,結(jié)果如下;消費者并沒有按照寫入的順序,來讀取,因為寫入消息的時候,設(shè)置了優(yōu)先級;包含vip內(nèi)容的優(yōu)先級最高;所以就先被消費掉了;

下期預(yù)告
【朝夕Net社區(qū)技術(shù)??縍abbitMQ的集群
往期精彩:
【朝夕技術(shù)??緾ore3.1WebApi_Filter-Authorize詳解
【朝夕技術(shù)??緾ore3.1WebApi_Filter多種注冊方式支持依賴注入
【朝夕技術(shù)??縒ebApi部署多服務(wù)器配置Nginx負(fù)載均衡
【朝夕技術(shù)??空揙RM框架—EntityFrameworkCore