自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

另類(lèi)玩法!使用 Rest API 操作 RabbitMQ

開(kāi)發(fā) 前端
如果我們安裝了 rabbitmq_management 插件,即安裝了 RabbitMQ 中的 Web 管理客戶(hù)端,那么我們就可以通過(guò) REST API 來(lái)進(jìn)行 RabbitMQ 的管理。
  • 1. REST API
  • 2. 開(kāi)啟 Web 管理頁(yè)面
  • 3. 實(shí)踐
    • 3.1 查看隊(duì)列統(tǒng)計(jì)數(shù)據(jù)
    • 3.2 創(chuàng)建隊(duì)列
    • 3.3 查看當(dāng)前連接信息
    • 3.4 查看當(dāng)前用戶(hù)信息
    • 3.5 創(chuàng)建一個(gè)用戶(hù)
    • 3.6 為新用戶(hù)設(shè)置 vhost
  • 4. 小結(jié)

RabbitMQ 還可以這么玩!

關(guān)于 RabbitMQ 的管理,我們可以通過(guò)網(wǎng)頁(yè)來(lái)進(jìn)行,在松哥前面的文章中也和小伙伴們做了相關(guān)的介紹了:

RabbitMQ 管理頁(yè)面該如何使用

不過(guò)呢,如果我們安裝了 rabbitmq_management 插件,即安裝了 RabbitMQ 中的 Web 管理客戶(hù)端,那么我們就可以通過(guò) REST API 來(lái)進(jìn)行 RabbitMQ 的管理。

可能有小伙伴會(huì)問(wèn),這有什么用?

如果我們的項(xiàng)目使用了如 Granglia 或者 Graphite 之類(lèi)的圖形工具,我們想抓取當(dāng)前 RabbitMQ 上消息消費(fèi)/累積的情況,就可以使用使用 REST API 去查詢(xún)這些信息并將查詢(xún)結(jié)果傳輸?shù)叫碌膱D形工具上,同時(shí),由于 REST API 就是 HTTP 請(qǐng)求,所以支持的客戶(hù)端也是多樣化,只要能發(fā)送 HTTP 請(qǐng)求,就能用,是不是特別方便?

1. REST API

可能有小伙伴還不懂什么是 REST API,這里就先簡(jiǎn)單科普下:

REST(Representational State Transfer)是一種 Web 軟件架構(gòu)風(fēng)格,它是一種風(fēng)格,而不是標(biāo)準(zhǔn),匹配或兼容這種架構(gòu)風(fēng)格的的網(wǎng)絡(luò)服務(wù)稱(chēng)為 REST 服務(wù)。

REST 服務(wù)簡(jiǎn)潔并且有層次,它通?;?HTTP、URI、XML 以及 HTML 這些現(xiàn)有的廣泛流行的協(xié)議和標(biāo)準(zhǔn)。在 REST 中,資源是由 URI 來(lái)指定,對(duì)資源的增刪改查操作可以通過(guò) HTTP 協(xié)議提供的 GET、POST、PUT、DELETE 等方法實(shí)現(xiàn)。

使用 REST 可以更高效的利用緩存來(lái)提高響應(yīng)速度,同時(shí) REST 中的通信會(huì)話(huà)狀態(tài)由客戶(hù)端來(lái)維護(hù),這可以讓不同的服務(wù)器處理一系列請(qǐng)求中的不同請(qǐng)求,進(jìn)而提高服務(wù)器的擴(kuò)展性。

在前后端分離項(xiàng)目中,一個(gè)設(shè)計(jì)良好的 Web 軟件架構(gòu)必然要滿(mǎn)足 REST 風(fēng)格。

2. 開(kāi)啟 Web 管理頁(yè)面

再來(lái)說(shuō)說(shuō)如何開(kāi)啟 Web 管理頁(yè)面,整體上來(lái)說(shuō),我們有兩種方式開(kāi)啟 Web 管理頁(yè)面:

安裝 RabbitMQ 的時(shí)候,直接選擇 rabbitmq:3-management 鏡像,安裝命令如下:

  1. docker run -d --rm --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management 

這樣安裝好的 RabbitMQ 就可以直接使用 Web 管理頁(yè)面了。

安裝的時(shí)候就選擇正常的普通鏡像 rabbitmq:3,安裝命令如下:

  1. docker run -d --hostname my-rabbit --name some-rabbit2 -p 5673:5672 -p 25672:15672 rabbitmq:3 

這個(gè)安裝好之后,需要我們進(jìn)入到容器中,然后手動(dòng)開(kāi)啟 Web 管理插件,命令如下:

  1. docker exec -it some-rabbit2 /bin/bash 
  2. rabbitmq-plugins enable rabbitmq_management 

第一條命令是進(jìn)入到容器中,第二條命令開(kāi)啟 Web 管理插件,執(zhí)行結(jié)果如下:

通過(guò)以上兩種方式任意一種把 Web 管理頁(yè)面打開(kāi),然后我們就可以使用 REST API 了。

3. 實(shí)踐

接下來(lái)我們就來(lái)體驗(yàn)幾個(gè)常見(jiàn)的 REST API 操作。

我們可以通過(guò) CURL 工具來(lái)發(fā)送請(qǐng)求,也可以通過(guò) POSTMAN 來(lái)發(fā)送請(qǐng)求,兩者皆可,選擇自己喜歡的即可。松哥這里兩種方式都和大家演示一下。

3.1 查看隊(duì)列統(tǒng)計(jì)數(shù)據(jù)

例如我們想查看虛擬主機(jī) myvh 下 hello-queue 隊(duì)列的數(shù)據(jù)統(tǒng)計(jì),我們可以通過(guò)如下方式來(lái)查看:

  1. curl -i -u javaboy:123 http://localhost:15672/api/queues/myvh/hello-queue 

-i 表示顯示響應(yīng)頭信息。

最終執(zhí)行結(jié)果如下:

可以看到,返回的信息有響應(yīng)頭,也有 JSON,不過(guò)返回的 JSON 沒(méi)有格式化,看起來(lái)有點(diǎn)難受,如果返回的數(shù)據(jù)只有 JSON 而不包含響應(yīng)頭,那么我們可以使用 python 來(lái)完成數(shù)據(jù)的格式化,如下:

可以看到,此時(shí)返回的數(shù)據(jù)就格式化了。

當(dāng)然我們也可以使用 POSTMAN 來(lái)發(fā)送這個(gè)請(qǐng)求,方式如下:

注意選擇認(rèn)證方式為 Basic Auth,同時(shí)設(shè)置正確的用戶(hù)名密碼。

POSTMAN 請(qǐng)求還是方便很多。

3.2 創(chuàng)建隊(duì)列

在 /myvh 虛擬主機(jī)下創(chuàng)建一個(gè)名為 javaboy-queue 的隊(duì)列,使用 CURL 請(qǐng)求方式如下:

  1. curl -i -u javaboy:123 -XPUT -H "Content-Type:application/json" -d '{"auto_delete":false,"durable":true}' http://localhost:15672/api/queues/myvh/javaboy-queue 

注意請(qǐng)求方式是 PUT 請(qǐng)求,請(qǐng)求參數(shù)是 JSON 形式,JSON 里邊有兩個(gè)東西,一個(gè) auto_delete 是說(shuō)如果該隊(duì)列沒(méi)有任何消費(fèi)者訂閱的話(huà),該隊(duì)列是否會(huì)被自動(dòng)刪除(如果是一些臨時(shí)隊(duì)列,則該屬性可以設(shè)置為 true);另外一個(gè) durable 則是說(shuō)隊(duì)列是否持久化(持久化的隊(duì)列,在 RabbitMQ 重啟之后,隊(duì)列依然存在),如果大家用 Java 代碼創(chuàng)建過(guò)隊(duì)列,這兩個(gè)參數(shù)很好理解,因?yàn)槲覀冇? Java 代碼創(chuàng)建隊(duì)列的時(shí)候這兩個(gè)參數(shù)也會(huì)經(jīng)常用到。

當(dāng)然,我們也可以用 POSTMAN 來(lái)發(fā)送請(qǐng)求:

返回 201 Created 表示隊(duì)列創(chuàng)建成功。

不過(guò)要注意在 Authorization 選項(xiàng)卡中設(shè)置用戶(hù)名/密碼:

3.3 查看當(dāng)前連接信息

我們可以通過(guò)如下請(qǐng)求查看當(dāng)前連接信息:

請(qǐng)求如下:

  1. curl -i -u javaboy:123 http://localhost:15672/api/connections 

POSTMAN 查看方式如下:

3.4 查看當(dāng)前用戶(hù)信息

  1. curl -i -u javaboy:123 http://localhost:15672/api/users 

POSTMAN 查看信息如下:

3.5 創(chuàng)建一個(gè)用戶(hù)

創(chuàng)建一個(gè)名為 zhangsan,密碼是 123 ,角色是 administrator 的用戶(hù)。

CURL:

  1. curl -i -u javaboy:123 -H "{Content-Type:application/json}" -d '{"password":"123","tags":"administrator"}' -XPUT http://localhost:15672/api/users/zhangsan 

POSTMAN:

3.6 為新用戶(hù)設(shè)置 vhost

將名為 zhangsan 的用戶(hù)設(shè)置到名為 myvh 的 vhost 下:

  1. curl -i -u javaboy:123 -H "{Content-Type:application/json}" -d '{"configure":".*","write":".*","read":".*"}' -XPUT http://localhost:15672/api/permissions/myvh/zhangsan 

參數(shù)是具體的權(quán)限信息:

POSTMAN 請(qǐng)求方式如下:

好啦,松哥這里隨便給大家舉幾個(gè)例子,其他 API 的用法,小伙伴們可以打開(kāi) RabbitMQ 的管理頁(yè)面,點(diǎn)擊下方的 HTTP API 按鈕,里邊有一個(gè)完整的文檔:

4. 小結(jié)

感興趣的小伙伴可以去試試哦~

本文轉(zhuǎn)載自微信公眾號(hào)「江南一點(diǎn)雨」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系江南一點(diǎn)雨公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 江南一點(diǎn)雨
相關(guān)推薦

2023-05-11 12:40:00

Spring控制器HTTP

2022-01-07 15:11:27

項(xiàng)目Go 框架

2023-04-18 15:18:10

2022-05-31 07:40:41

ArctypeFeather.jsSQLite

2011-10-27 16:24:48

API

2022-02-10 23:38:23

API架構(gòu)設(shè)計(jì)

2018-06-11 13:34:18

云庫(kù)云計(jì)算

2022-05-06 09:52:17

REST接口API

2014-01-07 14:39:26

Android開(kāi)發(fā)RxJavaREST

2020-04-22 09:00:00

REST API參數(shù)化前端

2012-06-27 09:47:05

ibmdw

2023-10-30 18:59:38

REST API開(kāi)發(fā)

2024-01-23 09:08:47

軟件架構(gòu)REST

2023-09-21 11:20:46

2022-02-09 14:36:25

GoMongoDBFiber

2023-04-10 14:20:47

ChatGPTRESTAPI

2024-06-24 00:20:00

API應(yīng)用程序接口

2023-08-14 09:00:00

APIgRPCREST

2020-07-07 07:00:00

Spring WebFREST APIReactive AP

2022-03-29 09:00:00

Angular框架REST API
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)