C 佇列學習筆記 RabbitMQ優先順序佇列

2022-03-01 20:10:11 字數 1976 閱讀 3224

在具體業務中可能會遇到一些要提前處理的訊息,比如普通客戶的訊息按先進先出的順序處理,vip客戶的訊息要提前處理。在rabbitmq中,訊息優先順序的實現方式是:在宣告queue時設定佇列的x-max-priority屬性,然後在publish訊息時,設定訊息的優先順序即可。

rabbitmq優先順序佇列注意事項:

1)rabbitmq3.5以後才支援優先順序佇列。

2)只有當消費者不足,不能及時進行消費的情況下,優先順序佇列才會生效。

3)優先順序取值範圍在0~9之間,數值越大則優先順序越高。

2.1、傳送端(生產端)

新建乙個控制台專案send,並新增乙個類rabbitmqconfig。

class

rabbitmqconfig

public

static

string virtualhost

public

static

string username

public

static

string password

public

static

int port

static

rabbitmqconfig()

}

rabbitmqconfig.cs

class

program

private

static

void

prioritymessagepublish()

;using (var connection =factory.createconnection())

};//宣告佇列

channel.queuedeclare(queue: "

priority

", durable: true, exclusive: false, autodelete: false

, arguments: dict);

//向該訊息佇列傳送訊息message

random random = new

random();

for (int i = 0; i < publishmessagecount; i++)

send , priority ");}}}}}

program.cs

2.2、接收端(消費端)

新建乙個控制台專案receive,按住alt鍵,將傳送端rabbitmqconfig類拖乙個快捷方式到receive專案中。

class

program

public

static

void

prioritymessagesubscribe()

;using (var connection =factory.createconnection())

received ");

});};

channel.basicconsume(queue:

"priority

", noack: false, consumer: consumer);//

需要啟用訊息響應,否則priority無效。

console.readkey();}}

}}

program.cs

2.3、執行結果

從消費情況可以看出,message_2及message_3由於priority優先順序最高都是7,所以它們會被最早消費,而message_5的priority是0,所以最後才被消費。

C 佇列學習筆記 RabbitMQ搭建集群

假設有兩台伺服器 注意事項 1 所有伺服器的erlang及rabbitmq版本必須一樣。2 伺服器名大小寫敏感。2.1 設定hosts檔案 路徑如下 c windows system32 drivers etc 2.2 開啟集群埠 假如您的主機及備機都沒有開啟防火牆,2.2可以略過 若開啟了防火牆,...

訊息佇列RabbitMQ學習筆記之簡單的訊息收發

佇列名稱 final string queue name rabbitmq test connection是socket連線的抽象,並且為我們管理協議版本協商 protocol version negotiation 認證 authentication 等等事情。connectionfactory ...

c 學習筆記 佇列

標頭檔案 include 定義 queue typename name typename為任意資料型別,name為所定義佇列名常用函式 函式名返回值q.empty 判斷佇列是否為空 q.size 返回當前佇列元素個數 q.pop 刪除隊首元素 q.push x 向隊尾新增元素 q.front 返回隊...