物联网架构成长之路(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/
作者:无脑仔的小明 出处:http://www.cnblogs.com/wunaozai/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。有需要沟通的,可以站内私信,文章留言,或者关注“无脑仔的小明”公众号私信我。一定尽力回答。 |