MQ基础与RabbitMQ安装

一、MQ概述

MQ 全称是Message Queue(消息队列),是在消息传输过程中保存消息的容器,多用于分布式系统之间进行通信。

二、MQ的优势和劣势

优势

  • 应用解耦
  • 异步提速
  • 削锋填谷

1)应用解耦:系统的耦合性越高,容错性就越低,可维护性就越低,使用MQ 使得应用间解耦,提升容错性和可维护性。

2)异步提速: 提升用户体验和系统吞吐量(单位时间内处理请求的数目)。

3)削锋填谷:使用了MQ之后,限制消费消息的速度为2000,这样一来,高峰期产生的数据势必会被积压在 MQ中,高峰 就被“”掉了。

但是因为消息积压,在高峰期过后的一段时间内,消费消息的速度还是会维持在1000,直到消费完积压的消息,这就叫做“填谷”。使用MQ后,可以提高系统稳定性。

劣势

  • 系统的可用性降低
  • 系统复杂度提高
  • 一致性问题

1)系统的可用性降低:引入的外部依赖越多,系统稳定性越差,一旦MQ宕机,会对业务系统造成影响。如何保证MQ的高可用?

2)系统复杂度提高:MQ的加入增加了系统的复杂度,以前是系统间同步的远程调用,现在是通过MQ进行一部调用,怎么处理消息丢失情况?如何保证消息传递的顺序性。

3)一致性问题:A系统发给BCD系统,若其中一个系统处理数据失败,如何保证消息数据处理的一致性问题。

三、常见的MQ产品

常见的MQ产品,例如:Rabbit MQ、Rocket MQ、ActiveMQ、KafKa 等,要根据具体业务选择对应的MQ产品。

RabbitMQ

ActiveMQ

RocketMQ

Kafka

公司/社区

Rabbit

Apache

阿里

Apache

开发语言

Erlang

java

java

Scala&java

协议支持

AMQP、XMPP、SMTP

openWire,SMTOMP、REST

自定义

自定义,社区封装了http协议

客户端支持语言

官方支持Erlang、java等

Java、C、C++、python等

Java、C++

官方支持Java、社区产出多种API

单机吞吐量

万级

万级

十万级

十万级

消息延迟

微秒级

毫秒级

毫秒级

毫秒以内

功能特性

并发能力强、性能极好、延迟低,社区活跃

老牌产品、成熟度高、文档多

MQ功能比较完备,扩张性好

主要应用在大数据领域

四、RabbitMQ安装包准备
4.1、rabbiytmqerlang版本对应关系

地址: https://www.rabbitmq.com/which-erlang.html

安装rabbitmq之前,需要安装 erlang ,本文均使用rpm文件进行安装,rabbitmq版本是3.8.30erlang版本是23.3.4.11

4.2、RabbitMq下载

地址: https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.11/erlang-23.3.4.11-1.el7.x86_64.rpm

后面这个el8,代表是Centos8才能安装的,高版本的RabbitMQ有些不支持Centos7,但是本文用来演示的是Centos7的系统环境。

4.3、erlang下载

地址: https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.30/rabbitmq-server-3.8.30-1.el7.noarch.rpm

  • 百度网盘链接:https://pan.baidu.com/s/1rp2jznSDKwdP9Jy5-4Lqtw?pwd=xe80
  • 提取码:xe80
五、上传安装包

root目录下创建一个 rabbitmq 的文件夹用来存放安装包,再进入这个文件夹,然后将下载好的安装包上传到对应的文件夹下。

[root@rancher ~]# mkdir rabbitmq
[root@rancher ~]# ls
anaconda-ks.cfg  kuboard-spray-data  rabbitmq
[root@rancher ~]# cd rabbitmq
[root@rancher rabbitmq]# ls
erlang-23.3.4.11-1.el7.x86_64.rpm  rabbitmq-server-3.8.30-1.el7.noarch.rpm
六、开始安装

先安装erlang

[root@rancher rabbitmq]# rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm 


RabiitMQ安装过程中需要依赖socat插件 再执行以下命令安装该插件。

[root@rancher rabbitmq]# yum install socat -y

最后再安装RabbitMq

[root@rancher rabbitmq]# rpm -ivh rabbitmq-server-3.8.30-1.el7.noarch.rpm 

七、启动RabbitMQ

完成安装步骤之后,系统会自动帮我们注册为系统服务,服务名为rabbitmq-server,用此命令来启动RabbitMq服务。

[root@rancher rabbitmq]# systemctl start rabbitmq-server

执行下面命令可以查看到RabbitMq的服务状态。

[root@rancher rabbitmq]# systemctl status rabbitmq-server

执行以下命令将RabbitMQ的服务设置为开启自启动。

[root@rancher rabbitmq]# systemctl enable rabbitmq-server
八、配置Web管理界面

默认情况下,rabbitmq没有安装web端的客户端软件,需要安装才可以访问Web管理界面。

[root@rancher rabbitmq]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@rancher:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@rancher...
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

started 3 plugins.

要想远程访问web管理界面还需要开放防火墙的 567215672两个端口,可以依次执行下面两条命令开放,最后再重启一下防火墙,使配合生效。

// 开放5672端口
[root@rancher rabbitmq]# firewall-cmd --zone=public --add-port=15672/tcp --permanent 
success
// 开放15672端口
[root@rancher rabbitmq]# firewall-cmd --zone=public --add-port=5672/tcp --permanent 

// 开放25672端口
[root@rancher rabbitmq]# firewall-cmd --zone=public --add-port=25672/tcp --permanent 
success
// 重启防火墙
[root@rancher rabbitmq]# firewall-cmd --reload 
success

然后我们就可以直接通过 主机地址:15672 就可以访问远程的web管理界面。

此时还是没办法进行登陆的,rabbitmq有一个默认的账号密码guest,但该情况仅限于本机localhost进行访问,所以需要添加一个远程登录的用户

  • 创建账号: 用户名为admin 密码为 123456 这是可以自定义的。
[root@rancher rabbitmq]# rabbitmqctl add_user admin 123456
Adding user "admin" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.

设置用户角色:角色有四种:

  • administrator:可以登录控制台、查看所有信息、并对rabbitmq进行管理
  • monToring:监控者;登录控制台,查看所有信息
  • policymaker:策略制定者;登录控制台指定策略
  • managment:普通管理员;登录控制
[root@rancher rabbitmq]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...

设置用户权限:用户 user_admin 具有/vhost1 这个 virtual host 中所有资源的配置、写、读权限,相当于超级管理员权限。

[root@rancher rabbitmq]# rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "/" ...

其他命令

# 修改密码
rabbitmqctl change_ password 用户名 新密码

# 删除用户
rabbitmqctl delete_user 用户名

# 查看用户清单
rabbitmqctl list_users

完成后我们就可以用 账号: admin 密码: 123456 进行登陆。

到此,在centos7下安装rabbitmq就已经完成。同时我们还可以通过docker来安装rabbitmq

参考:https://www.bilibili.com/video/BV15k4y1k7Ep/


改变你能改变的,接受你不能改变的,关注公众号:程序员康康,一起成长,共同进步。

  • 27
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值