物聯網架構成長之路(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/


免責聲明!

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



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