RabbitMQ学习笔记[1]-初识与安装RabbitMQ

一、MQ

1. MQ定义

MQ(Message Queue):翻译为消息队列,典型的生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松实现系统间的解耦。

别名为消息中间件,统过利用高校可靠的消息机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。

2. MQ都有哪些

主流的消息中间件,如传统的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴的RocketMQ等。

3. 不同MQ的特点

# ActiveMQ:ActiveMQ是Apache出品,最流行、能力强劲的开源消息总线。是一个完全支持JMS规范的消息中间件。丰富的API,多种集群架构模式让AcitveMQ在业界成为老牌的消息中间件。

# Kafka:Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache顶级项目。Kafka主要特点是基于pull的模式来处理消息消费,追求高吞吐量,目的主要用于日志收集和传输。0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求。

# RocketMQ:RocketMQ是阿里开源的消息中间件,是纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。RocketMQ思路起源于Kafka,但是并不是Kafka的copy,它对消息的可靠传输及事务性做了优化。

# RabbitMQ:RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用于在企业系统内对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。

*** RabiitMQ比Kafka可靠,Kafka更适合IO高吞吐量的处理,一般用于大数据日志处理或对实时性、可靠性要求稍低的场景使用,比如ELK日志收集。

二、RabbitMQ

基于AMQP协议,erlang语言开发,是部署最广泛的开源消息中间件,是最受欢迎的开源消息中间件之一。

三、AMQP

1. 定义

AMQP协议:AMQP(advanced message queuing protocol)在2003年被提出,最早用于解决金融领域不同平台之间的消息传递交互问题。顾名思义,AMQP是一种协议,更准确的说是一种binary wirelevel protocol(链接协议)。这是其和JMS的本质区别,AMQP不从API层进行限定,而是直接定义网络交换的数据格式,这使得实现了AMQP的provider天然性就是跨平台的。

2. AMQP协议模型

 

# Server:接收和分发消息的应用。

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

# Connection:publisher/consumer 和server之间的TCP连接。断开连接的操作只会在client端进行,server不会断开连接,除非出现网络故障或server服务出现问题。

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

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

# Queue:消息最终被送到这里等待consumer取走。一个message可以被同时拷贝到多个queue中。

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

四:RabbitMQ安装

官网现在地址:https://www.rabbitmq.com/download.html

还需下载erlang依赖包。

*** centos7的安装包

1. 安装步骤

# 将rabbitmq的安装包上传到linux系统中

# 安装erlang依赖包

rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm

# 安装内存管理依赖

rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm

# 安装rabbitmq安装包

rpm -ivh rabbitmq-server-3.7.18-1.el7.noarch.rpm

** 默认安装完成后配置文件模板在:/usr/share/doc/rabbitmq-3.7.18/rabbitmq.config.example目录中,需要将配置文件复制到/etc/rabbitmq/目录中,并修改名称为rabbitmq.config

# 复制配置文件

cp /usr/share/doc/rabbitmq-3.7.18/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

# 修改配置文件

vi /etc/rabbitmq/rabbitmq.config

# rabbitmq插件管理,启动管理端插件

rabbitmq-plugins enable rabbitmq_management

# 启动rabbitmq服务

systemctl start rabbitmq-server

# 查看服务状态

systemctl status rabbitmq-server

# 关闭防火墙

systemctl disable firewalld  // 从开机启动中移出

systemctl stop firewalld  // 关闭

# 访问登录web管理界面

http://192.168.0.116:15672/

默认用户名密码:guest/guest

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值