RabbitMQ通過http API獲取隊列消息數量等信息


參考

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM