物联网架构成长之路(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/

原文地址:https://www.cnblogs.com/wunaozai/p/13921968.html