Linux部署RabbitMQ
简介
RabbitMQ是一个开源的消息代理软件,也被称为面向消息的中间件。它实现了高级消息队列协议(AMQP),并且是用Erlang语言编写的。RabbitMQ服务器主要用于处理消息队列,这些队列遵循FIFO(先进先出)原则。
在分布式系统中,RabbitMQ常常作为一种通信方式,使得各个系统之间可以异步地、解耦地进行通信。生产者将消息发送到RabbitMQ,而消费者则从RabbitMQ中取出消息进行处理。这种通信方式允许发送方(生产者)和接收方(消费者)不需要知道对方的存在,提高了系统的灵活性和可扩展性。
RabbitMQ的优势包括:
- 应用解耦:通过将系统间的通信解耦,可以提高系统的容错性和可维护性。
- 异步提速:允许将耗时的操作异步处理,提高应用程序的响应时间和吞吐量。
- 削峰填谷:在请求增加时,可以平滑系统负载,提高系统稳定性。
然而,使用RabbitMQ也可能带来一些劣势,如可能降低系统的可用性和复杂度增加,以及可能的一致性问题。
RabbitMQ支持多种主要的编程语言,包括Java、Python、Ruby、PHP、C/C++等,提供了丰富的客户端库来与代理接口进行通信。此外,RabbitMQ还支持集群和故障转移,这些特性使得它在构建可靠、高性能的分布式系统时非常有用。
总的来说,RabbitMQ是一个强大且灵活的消息队列系统,它可以帮助开发者构建高性能、可扩展、可靠的分布式系统。
RabbitMQ在企业开发中十分常见,下面演示快速搭建RabbitMQ环境。
RabbitMQ官网:https://www.rabbitmq.com/
安装
rabbitmq在yum仓库中的版本比较老,所以我们需要手动构建yum仓库
-
准备yum仓库
- 安装密钥
bashrpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
- 准备仓库文件
bashvim /etc/yum.repos.d/rabbitmq.repo
- 填入如下内容
bash## ## Zero dependency Erlang ## [rabbitmq_erlang] name=rabbitmq_erlang baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck=1 gpgcheck=1 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_erlang-source] name=rabbitmq_erlang-source baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 ## ## RabbitMQ server ## [rabbitmq_server] name=rabbitmq_server baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_server-source] name=rabbitmq_server-source baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300
-
安装RabbitMQ(需root权限)
bashyum install erlang rabbitmq-server -y
-
启动(需root权限)
bash# 使用systemctl管控,服务名:rabbitmq-server systemctl enable rabbitmq-server # 开机自启 systemctl disable rabbitmq-server # 关闭开机自启 systemctl start rabbitmq-server # 启动 systemctl stop rabbitmq-server # 关闭 systemctl status rabbitmq-server # 查看状态
-
放行防火墙,RabbitMQ使用5672、15672、25672 3个端口
bash# 方式1(推荐),关闭防火墙 systemctl stop firewalld # 关闭 systemctl disable firewalld # 关闭开机自启 # 方式2,放行5672 25672端口 firewall-cmd --add-port=5672/tcp --permanent # 放行tcp规则下的5672端口,永久生效 firewall-cmd --add-port=15672/tcp --permanent # 放行tcp规则下的15672端口,永久生效 firewall-cmd --add-port=25672/tcp --permanent # 放行tcp规则下的25672端口,永久生效 firewall-cmd --reload # 重新加载防火墙规则
-
启动RabbitMQ的WEB管理控制台
bashrabbitmq-plugins enable rabbitmq_management
-
添加admin用户,并赋予权限
bash#账号admin 密码bowen rabbitmqctl add_user admin 'bowen' rabbitmqctl set_permissions -p "/" "admin" ".*" ".*" ".*" rabbitmqctl set_user_tags admin administrator
-
浏览器打开管理控制台
-
创建用户bowen密码为123456
bashrabbitmqctl add_user bowen 123456
-
将bowen用户提升为管理员权限
bashrabbitmqctl set_user_tags bowen administrator
-
查看用户权限
bashrabbitmqctl list_users
-
删除用户
bash#示例删除bowen用户 rabbitmqctl delete_user bowen
-
登录查看
至此,RabbitMQ已经安装完成了。