RabbitMQ提供了HTTP API手冊,發現其中有獲取隊列情況的API。(本地的API手冊地址為:http://localhost:15672/api)
所有API調用都需要做權限驗證,需在請求頭部中加入權限驗證信息
1.獲取所有隊列信息
http://host:15672/api/queues
2.獲取單個隊列信息
http://host:15672/api/queues/vhost/name
host為RabbitMQ部署地址,vhost為隊列所在的虛擬主機名,name為隊列名。
注意:若隊列所在默認虛擬主機,即主機名為"/",請求時需將"/"url轉碼后("%2f")請求
static void Main(string[] args) { #region MyRegion //通過RabbitMq的Api來獲取相關隊列的信息 var url = " http://192.168.0.37:15672/api/queues/%2f/Citms.Queue.LXEPP.VideoMq"; //創建HttpClient(注意傳入HttpClientHandler) var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip }; var username = "admin"; var password = "citms"; using (var http = new HttpClient(handler)) { string auth = username + ":" + password; byte[] b = System.Text.Encoding.Default.GetBytes(auth); var a = Convert.ToBase64String(b); http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", a); var response = http.GetAsync(url).Result;//傳參使用 //確保HTTP成功狀態值 response.EnsureSuccessStatusCode(); //await異步讀取最后的JSON(注意此時gzip已經被自動解壓縮了,因為上面的AutomaticDecompression = DecompressionMethods.GZip) var result = response.Content.ReadAsStringAsync().Result; var json = JsonConvert.DeserializeObject<dynamic>(result); } }