體驗Rabbitmq強大的【優(yōu)先級隊列】之輕松面對現(xiàn)實業(yè)務場景
說到隊列的話,大家一定不會陌生,但是扯到優(yōu)先級隊列的話,還是有一部分同學是不清楚的,可能是不知道怎么去實現(xiàn)吧,其實呢,,,這東西已
經(jīng)爛大街了。。。很簡單,用“堆”去實現(xiàn)的,在我們系統(tǒng)中有一個訂單催付的場景,我們客戶的客戶在tmall,taobao下的訂單,taobao會及時將訂單推送給
我們,如果在用戶設定的時間內(nèi)未付款那么就會給用戶推送一條短信提醒,很簡單的一個功能對吧,但是,tmall商家對我們來說,肯定是要分大客戶和小客
戶的對吧,比如像施華蔻,百雀林這樣大商家一年起碼能夠給我們貢獻幾百萬,所以理應當然,他們的訂單必須得到優(yōu)先處理,而曾今我們的后端系統(tǒng)是使
用redis來存放的定時輪詢,大家都知道redis只能用List做一個簡簡單單的消息隊列,并不能實現(xiàn)一個優(yōu)先級的場景,所以訂單量大了后采用rabbitmq進行
改造和優(yōu)化,如果發(fā)現(xiàn)是大客戶的訂單給一個相對比較高的優(yōu)先級,否則就是默認優(yōu)先級,好了,廢話不多說,我們來看看如何去設置。
一:優(yōu)先級隊列
既然是優(yōu)先級隊列,那么必然要在Queue上開一個口子貼上一個優(yōu)先級的標簽,為了看怎么設置,我們用一下rabbitmq的監(jiān)控UI,看看這個里面是如何
手工的創(chuàng)建優(yōu)先級隊列。
從這個圖中可以看到在Arguments欄中有特別多的小屬性,其中有一項就是"Maximum priority",這項的意思就是說可以定義優(yōu)先級的最大值,其實
想想也是,不可能我們定義的優(yōu)先級是一個非常大的數(shù)字,比如int.MaxValue,大多情況下都是10以內(nèi)的數(shù)字就可以了,再或者我們曾今接觸過的 MSMQ,
它的優(yōu)先級只是一些枚舉值,什么High,Normal,Low,不知道大家可否記得? 下面來看下代碼中該如何實現(xiàn)呢???
1. 在Queue上附加優(yōu)先級屬性
Dictionary<string, object網(wǎng)友評論