RabbitMQ 使用指南

1 MQ 简 介消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成 。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信 。对于消息中间件,常见角色大致也就有 Producer(生产者)、Consumer(消费者) 。
常见的消息中间件产品:
1). ActiveMQ
ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线 。ActiveMQ 是一个完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现 。我们在本次课程中介绍 ActiveMQ 的使用 。
2). RabbitMQ
AMQP 协议的领导实现,支持多种场景 。淘宝的 MySQL 集群内部有使用它进行通讯,
OpenStack 开源云平台的通信组件,最先在金融行业得到运用 。
3). ZeroMQ
史上最快的消息队列系统
4). Kafka
Apache 下的一个子项目。特点:高吞吐,在一台普通的服务器上既可以达到 10W/s
的吞吐速率;完全的分布式系统 。适合处理海量数据
2 MQ 作 用1). 解耦 :中间件中的生产者只管发送消息 , 消费者只要从队列当中获取消息进行消费就可以 , 从而来实现业务的解耦 .
2). 冗余存储 : 有些情况下,处理数据的过程会失败 。消息中间件可以把数据进行持久化直 到它们已经被完全处理,通过这一方式规避了数据丢失风险 。在把一个消息从消息中间件中删 除之前,需要你的处理系统明确地指出该消息己经被处理完成,从而确保你的数据被安全地保 存直到你使用完毕 。
3). 可恢复性: 当系统一部分组件失效时,不会影响到整个系统。消息中间件降低了进程间的 稿合度,所以即使一个处理消息的进程挂掉,加入消息中间件中的消息仍然可以在系统恢复后 进行处理。
4). 顺序保证: 在大多数使用场景下,数据处理的顺序很重要,大部分消息中间件支持一定程 度上的顺序性 。
5). 缓冲: 在任何重要的系统中,都会存在需要不同处理时间的元素 。消息中间件通过一个缓 冲层来帮助任务最高效率地执行,写入消息中间件的处理会尽可能快速。
6). 异步通信: 在很多时候应用不想也不需要立即处理消息。消息中间件提供了异步处理机制,允许应用把一些消息放入消息中间件中,但并不立即处理它,在之后需要的时候再慢慢处理。
3 RabbitMQ 安装及启动3.1 安装依赖环境
rpm -ivh erlang-20.3.8.6-1.el6.x86_64.rpm
yum -y install epel-release
yum -y install socat
3.2 安装 rabbitMQ
rpm -ivh rabbitmq-server-3.7.7-1.el6.noarch.rpm
3.3 添加用户
默认情况下管理界面只能在 linux 系统本机可以访问, 如果想其他的主机也能访问,需要配置:
rabbitmq-plugins enable rabbitmq_management
添加访问用户:
rabbitmqctl add_user admin admin
3.4 RabbitMQ 启动/停止
启动 : service rabbitmq-server start
停止: service rabbitmq-server stop
查看状态: service rabbitmq-server status
4 Rabbit MQ 管理界面访问4.1 Overview 概 要
该栏目主要展示的是 MQ 的概要信息 , 如消息的数量, Connection , Channel, Exchange , Queue , Consumer 的数量.

RabbitMQ 使用指南

文章插图
 
4.2 Exchange 交换器
该栏目主要展示的是当前虚拟主机下的交换器,也可以在此添加一个新的交换器, 并且配置对应的交换器的规则属性 。
RabbitMQ 使用指南

文章插图
 
4.3 Queues 队 列
该栏目展示的是消息队列的信息,里面有各个队列的概要信息, 也可以在此栏目添加队列
Queue
RabbitMQ 使用指南

文章插图
 
4.4 Admin 系统管理
该栏目展示的是用户管理的信息, 包含用户列表的展示,添加用户,添加虚拟主机等信息
RabbitMQ 使用指南

文章插图
 
5 RabbitMQ 的相关概念5.1 生产者与消费者
【RabbitMQ 使用指南】5.1.1 生产者
Producer: 生产者,就是投递消息的一方 。
生产者创建消息,然后发布到 RabbitMQ 中 。消息一般可以包含 2 个部分:消息体和标签 (Label) 。消息体也可以称之为 payload ,在实际应用中,消 息体一般是一个带有业务逻辑结构 的数据,比如一个 JSON 字符串 。当然可以进一步对这个消息体进行序列化操作 。消息的标签用来表述这条消息 , 比如 一个交换器的名称和一个路由键。生产者把消息交由 RabbitMQ , RabbitMQ 之后会根据标签把消息发送给感兴趣的消费者(Consumer )。


推荐阅读