消息中间件 ---------RabbitMQ(一)

消息中间件 ---------RabbitMQ(二)

1.RabbitMQ介绍

1.1.什么是mq

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

1.2.选型和对比

RabbitMQActiveMQRocketMQKafka
公司/社区RabbitApache阿里Apache
开发语言ErlangJavaJavaScala&Java
协议AMQPOpenWire、AUTO、Stomp、MQTT自定义自定义
单机吞吐量万级万级(最差)十万级十万级
消息延迟微妙级毫秒级毫秒级毫秒以内
特性并发能力很强,延时很低老牌产品,文档较多MQ功能比较完备,扩展性佳只支持主要的MQ功能,毕竟是为大数据领域准备的。

综合上面的材料得出以下两点:

  1. 中小型软件公司,建议选RabbitMQ.一方面,erlang语言天生具备高并发的特性,RabbitMQ的社区十分活跃,可以解决开发过程中遇到的bug,这点对于中小型公司来说十分重要。不考虑rocketmq和kafka的原因是中小型软件公司不如互联网公司,数据量没那么大,选消息中间件,应首选功能比较完备的,所以kafka和rocketmq排除。
  2. 大型软件公司,根据具体使用在rocketMq和kafka之间二选一。一方面,大型软件公司,具备足够的资金搭建分布式环境,也具备足够大的数据量。针对rocketMQ,大型软件公司也可以抽出人手对rocketMQ进行定制化开发,毕竟国内有能力改JAVA源码的人,还是相当多的。至于kafka,根据业务场景选择,如果有日志采集功能,肯定是首选kafka了。

1.3.什么是RabbitMQ?

​ AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年,AMQP规范发布。类比HTTP。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nS5y1jCq-1661911438537)(assets/image-20220527101619120.png)]

2007年,Rabbit技术公司基于AMQP标准开发的RabbitMQ1.0发布。RabbitMQ采用Erlang 语言开发。

1.4.为什么要使用RabbitMQ ?

1.4.1.解耦

传统模式:系统间耦合性太强,如图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!

中间件模式:将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改。
在这里插入图片描述

1.4.2.异步

传统模式: 一些非必要的业务逻辑以同步的方式运行,太耗费时间

中间件模式: 将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度

1.4.3.削峰

传统模式:并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常

中间件模式: 系统A慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取消息

2.安装RabbitMQ

2.1.下载

官网下载地址:http://www.rabbitmq.com/download.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-clVbl3P0-1661911438543)(assets/1532759070767.png)]

2.2.安装Erlang

上传安装包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pLd1JZ9N-1661911438544)(assets/image-20220527104307074.png)]

依次执行命令:

1)rpm -ivh esl-erlang-17.3-1.x86_64.rpm --force --nodeps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XctiUkUw-1661911438545)(assets/clip_image002-1533941272258.png)]

2)rpm -ivh esl-erlang_17.3-1centos6_amd64.rpm --force --nodeps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hw3klRba-1661911438545)(assets/clip_image003-1533941272258.png)]

3)rpm -ivh esl-erlang-compat-R14B-1.el6.noarch.rpm --force --nodeps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UThrZmN9-1661911438546)(assets/clip_image001-1533941511197.png)]

2.3.安装RabbitMQ

上传安装包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aVavw8En-1661911438547)(assets/image-20220527104353361.png)]

2.3.1.安装RabbitMQ

rpm -ivh rabbitmq-server-3.4.1-1.noarch.rpm

在这里插入图片描述

2.3.2.启动、停止

service rabbitmq-server start

service rabbitmq-server stop

service rabbitmq-server restart

service rabbitmq-server status

2.3.3.设置开机启动

chkconfig rabbitmq-server on

2.3.4.防火墙开放15672端口

/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT

/etc/rc.d/init.d/iptables save

2.3.5.开启web界面管理工具

rabbitmq-plugins enable rabbitmq_management

service rabbitmq-server restart

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d5i3jQxg-1661911438548)(assets/clip_image009-1533941272259.png)]

2.3.6.创建账户

这里我们以创建个admin帐号,密码1111为例,创建一个账号并支持远程ip访问。

1.创建账号

rabbitmqctl  add_user admin 1111

2.设置用户角色

rabbitmqctl  set_user_tags admin  administrator

3.设置用户权限

rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

4.设置完成后可以查看当前用户和角色(需要开启服务)

rabbitmqctl list_users

在这里插入图片描述

账号guest具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest用户只能通过localhost登陆

5.测试

​ 浏览器输入:serverip:15672。其中serverip是RabbitMQ-Server所在主机的ip,15672是RabbitMQ-Server的端口号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zHCXjPfn-1661911438549)(assets/1587814828520.png)]

2.4管理界面

2.4.1.主页总览

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W7eSPxHL-1661911438550)(assets/image-20220527141507906.png)]

connections:无论生产者还是消费者,都需要与RabbitMQ建立连接后才可以完成消息的生产和消费,在这里可以查看连接情况

channels:通道,建立连接后,会形成通道,消息的投递获取依赖通道。

Exchanges:交换机,用来实现消息的路由

Queues:队列,即消息队列,消息存放在队列中,等待消费,消费后被移除队列。

端口:

5672: rabbitMq的编程语言客户端连接端口

15672:rabbitMq管理界面端口

25672:rabbitMq集群的端口

###2.4.2.添加用户

如果不使用guest,我们也可以自己创建一个用户:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2CSNbyme-1661911438551)(assets/image-20220527113557624.png)]

1、 超级管理员(administrator)

可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。

2、 监控者(monitoring)

可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

3、 策略制定者(policymaker)

可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。

4、 普通管理者(management)

仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。

5、 其他

无法登陆管理控制台,通常就是普通的生产者和消费者。

2.4.3.创建Virtual Hosts

虚拟主机:类似于mysql中的database。他们都是以“/”开头

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SumqHL0F-1661911438552)(assets/image-20220527114104167.png )]

2.5.4.设置权限

1、点击用户名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LBwD7Wi3-1661911438552)(assets/image-20220527114335118.png)]

2、设置权限

3、查看效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nGVZWEa8-1661911438553)(assets/image-20220527114848167.png)]

点击跳转:下一篇
消息中间件 ---------RabbitMQ(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值