一、前言
這張圖,前面已經說到了,物聯網平台推送給客戶應用服務器(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/