1. 程式人生 > 實用技巧 >物聯網架構成長之路(60)-訊息佇列服務RabbitMQ(安裝篇)

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