【RabbitMQ】——入门&安装

一、入门

1. 什么是MQ

<1> 本质是一个队列,FIFO,先进先出。
<2> 是一种跨进程的通信机制,用于上下游传递消息。
<3> “逻辑解耦+物理解耦”的通讯方式。

2. 为什么要使用MQ

<1> 流量削峰
使用消息队列做缓冲,将任务分做延迟处理
<2> 应用解耦
<3> 异步处理
在这里插入图片描述
在这里插入图片描述

3. MQ的分类

<1> ActiveMQ
优点

单机吞吐量万级,时效性ms级,可用性高,基于主从架构实现高可用,消息可靠性较低的该路丢失数据。

缺点

官方社区对ActiveMQ 5.x 维护较少,高吞吐量场景较少使用

<2> Kafka
优点

性能卓越,单机写入TPS约在百万条/秒。最大优点吞吐量高。时效性ms级。kafka是分布式的,一个消息多个副本,少数机器宕机不会丢失数据。
Kafkaweb管理界面,Kafka-Manager

缺点

Kafka单机超过64个队列/分区,Load会发生明显的cpu飙高现象,队列越多,load越高,发送消息响应时间边长

<3> RocketMQ

阿里巴巴开源产品,用java实现,设计时参考Kafa,并做了自己的一些改进,

优点

单机吞吐量十万级,可用性非常高,分布式框架,消息可以做到0丢失,MQ功能比较完善,扩展性好,支持10亿级别的消息堆积,不会因为堆积导致性能下降

缺点

支持的客户端语言不多,目前是java和++。其中c++不成熟

<4> RabbitMQ

2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。

优点

由于erlang.语言的高并发特性,性能较好;吞吐量到万级,MQ功能比较完备,健壮、稳定、易用、跨平台、支持多种语言如: Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX文档齐全;开源提供的管理界面非常棒,用起来很好用,社区活跃度高;更新频率相当高

缺点

商业部需要收费,学习成本较高

4. 四大核心概念

在这里插入图片描述
<1> 生产者
<2> 队列
<3> 交换机
<4> 消费者

5. 原理名词解释

在这里插入图片描述

<1> Broker

接收和分发消息的应用,RabbitMQ Server 就是Message Broker

<2> Vrtual host

出于多租户和安全因素设计的,把AMOP的基本组件划分到一个虚拟的分组中,类似于网络中的namespace概念。当多个不同的用户使用同一个RabbitMQ server 提供的服务时,可以划分出多个 vhost,每个用户在自己的vhost创建exchange / queue 等

<3> Connection

publisher / consumer 和broker之间的TCP连接

<4> Channel

如果每一次访问RabbitMQ都建立一个Connection ,在消息量打的时候建立TCP Connection的开销将是巨大的,效率也较低。Channel是在connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的channel进行通讯,AMQP method包含了channel id帮助客户端和message broker识别channel,所以channel之间是完全隔离的。Channel作为轻量级的Connection极大减少了操作系统建立TCP connection的开销

<5>Exchange

message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发消息到queue 中去。常用的类型有: direct (point-to-point), topic (publish-subscribe) and fanout (multicast)

<6> Queue

消息最终被送到这里等待consumer 取走

<7> Binding

Exchange和queue之间的虚拟连接,Binding中可以包含routing key ,Binding信息被保存到exchange中的查询表,用于message的分发依据。

二、安装

1. 下载RabbitMQ安装包

官网下载https://www.rabbitmq.com/download.html

2. 下载 erlang 依赖

erlang 版本需要和RabbitMQ对应。

wget --content-disposition https://packagecloud.io/rabbitmq/erlang/packages/el/8/erlang-25.0-1.el8.x86_64.rpm/download.rpm
3. 安装命令
rpm -ivh erlang-25.0-1.el8.x86_64.rpm
yum install socat -y
rpm -ivh rabbitmq-server-3.10.6-1.el8.noarch.rpm
4. 常用命令

设置开机启动RabbitMQ服务

chkconfig rabbitmq-server on

启动服务

/sbin/service rabbitmq-server start

查看服务状态

/sbin/service rabbitmq-server status

停止服务

/sbin/service rabbitmq-server stop
5. 安装web 管理页面

步骤如下:
<1> 停止mq服务

/sbin/service rabbitmq-server stop

<2> 开启web管理插件

rabbitmq-plugins enable rabbitmq_management

<3> 默认端口号15672

初始账号/密码guest/guest 

<4>添加一个新的用户

rabbitmqctl add_user <user> <password>

<5>设置用户角色

rabbitmqctl set_user_tags <user> administrator

<6>设置用户权限

rabbitmqctl set_ permessions [-p <vhostpath>] <user> <conf> <write> <read>

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

用户admin 具有/vhost这个virtual host中所有的资源的配置,读,写权限
<7>查看当前用户和角色

rabbitmqctl list_users
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值