物聯網架構成長之路(60)-訊息佇列服務RabbitMQ(安裝篇)
一、前言
這張圖,前面已經說到了,物聯網平臺推送給客戶應用伺服器(APP應用),除了用傳統的RPC遠端呼叫。還可以使用RabbitMQ這種訊息佇列來進行推送。RabbitMQ之類的MQ這裡就不展開細說了。
下面這張圖是 OneNet 後臺截圖,裡面的MQ推送和HTTP推送,就是我上面說到的兩種方式。
二、安裝RabbitMQ
通過預設的 apt-get install rabbitmq-server 安裝會安裝3.6 版本,比較舊,一些配置也不通用。所以到官網上早新版本進行安裝。
https://www.rabbitmq.com/install-debian.html#apt
1 #!/bin/sh 2 3 ## If sudo is not available on the system, 4 ## uncomment the line below to install it 5 # apt-get install -y sudo 6 7 sudo apt-get update -y 8 9 ## Install prerequisites 10 sudo apt-get install curl gnupg -y 11 12 ## Install RabbitMQ signing key 13 curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo apt-key add -14 15 ## Install apt HTTPS transport 16 sudo apt-get install apt-transport-https 17 18 ## Add Bintray repositories that provision latest RabbitMQ and Erlang 23.x releases 19 sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list <<EOF 20 ## Installs the latest Erlang 23.x release. 21 ## Change component to "erlang-22.x" to install the latest 22.x version. 22 ## "bionic" as distribution name should work for any later Ubuntu or Debian release. 23 ## See the release to distribution mapping table in RabbitMQ doc guides to learn more. 24 deb https://dl.bintray.com/rabbitmq-erlang/debian bionic erlang 25 ## Installs latest RabbitMQ release 26 deb https://dl.bintray.com/rabbitmq/debian bionic main 27 EOF 28 29 ## Update package indices 30 sudo apt-get update -y 31 32 ## Install rabbitmq-server and its dependencies 33 sudo apt-get install rabbitmq-server -y --fix-missing
注意: 如果按照遇到依賴問題,比如舊版本沒有解除安裝乾淨的,或者linux核心版本比較低的,可以試一下用 aptitude 這個工具來安裝。
我自己安裝的時候出現下面的問題。是用aptitude 工具來解決。
1 apt-get install aptitude 2 aptitude install rabbitmq-server
上圖提示,保留預設依賴。輸入n,提示下圖,提示是否強制安裝,再輸入Y
安裝成功介面
三、啟動外掛
新版本3.7以上,自帶有rabbitmq_auth_backend_http 和 rabbitmq_auth_backend_cache 外掛,所以不需要單獨安裝。但是還是需要手動啟用。
3.1 啟用rabbitmq_management
1 rabbitmq-plugins enable rabbitmq_management 2 rabbitmq-plugins list
3.2 amqp預設開啟5672,控制檯預設開啟15672. 開啟控制檯management外掛後,預設是有guest/guest帳號密碼。但是由於僅限於本地登入。需要遠端登入,則需要建立新的使用者。
1 # root許可權 2 rabbitmqctl add_user username passwd //新增使用者,後面兩個引數分別是使用者名稱和密碼 3 rabbitmqctl set_permissions -p / username ".*" ".*" ".*" //新增許可權 4 rabbitmqctl set_user_tags username administrator //修改使用者角色,將使用者設為管理員
詳細命令參考
https://www.cnblogs.com/cwp-bg/p/10070467.html
登入後介面
四、啟用http認證外掛
3.7以前是需要單獨到github下載外掛。新版本3.7以上直接啟用外掛即可。
1 # 查詢所有外掛 2 rabbitmq-plugins list 3 # 啟用對應外掛 4 rabbitmq-plugins enable rabbitmq_auth_backend_http 5 rabbitmq-plugins enable rabbitmq_auth_backend_cache
對應外掛配置請參考官方文件:https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.conf.example
配置檔案在 /etc/rabbitmq/rabbitmq.conf 如果沒有,則建立,並配置如下資訊。
1 auth_backends.1 = cache 2 auth_cache.cached_backend = http 3 4 auth_http.http_method = post 5 auth_http.user_path = http://localhost:8080/auth/user 6 auth_http.vhost_path = http://localhost:8080/auth/vhost 7 auth_http.resource_path = http://localhost:8080/auth/resource 8 auth_http.topic_path = http://localhost:8080/auth/topic
重啟rabbitmq服務
1 service rabbitmq-server restart
然後配置對應的SpringBoot的Controller提供的user、vhost、resource、topic介面,就可以實現對帳號的認證,對topic、resource的許可權控制。
程式碼開發部分,請閱讀《物聯網架構成長之路》之訊息佇列服務RabbitMQ(程式碼篇)
參考資料:
https://www.rabbitmq.com/documentation.html
https://www.rabbitmq.com/install-debian.html#apt
https://www.cnblogs.com/cwp-bg/p/10070467.html
本文地址:https://www.cnblogs.com/wunaozai/p/13921968.html
本系列目錄:https://www.cnblogs.com/wunaozai/p/8067577.html
個人主頁:https://www.wunaozai.com/