Rabbitmq的安装与使用

简介: Rabbitmq的安装与使用

一、Rabbitmq的介绍

Rabbitmq是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如,Python、Ruby、php等语言。支持ajax,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。


这里需要说明的是: AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布订阅)、可靠性、安全。


通常我们谈队列服务,会有三个概念:发消息者、队列、收消息者,Rabbitmq在这个基本概念上多做了一层抽象,在发消息者和队列之间,加入了消息交换机(Exchange)。这样发消息和队列就没有直接联系,转而变成发消息者把消息给消息交换机,交换器根据调度策略再把消息给消息交换机,消息交换机根据调度策略再把消息再给队列。

20180816164427654.png

上图中,左侧P代表生产者,也就是往Rabbitmq发消息的程序;中间是Rabbitmq,其中包括交换机和队列;右侧C代表消费者,也就是从Rabbitmq拿消息的程序。


五个概念:


1)虚拟主机:一个虚拟主机持有一组消息交换机、队列和绑定。在Rabbitmq中,用户只能在虚拟主机的粒度进行权限控制。因此,如果需要禁止A组访问B组的消息交换机/队列/绑定,必须为A和B分别创建一个虚拟主机。每个Rabbitmq服务器都有一个默认的虚拟主机”/”。


2)消息:消息是不具名的,它由消息头和消息体组成。消息体是不透明的,而消息头则由一系列的可选属性组成,这些属性包括routing-key(路由键)、priority(相对于其他消息的优先权)、delivery-mode(指出该消息可能需要持久性存储)


3)绑定:也就是交换机需要和队列向绑定,如上图所示,是多对多的关系。用于消息队列和交换器之间的互联。一个绑定就是基于路由键将交换器和消息队列连接起来的路由规则,所以可以将交换器理解成一个由绑定构成的路由表


4)信道:多路复用连接中的一条独立的双向数据流通道。信道是建立在真实的tcp连接内地虚拟连接。AMQP命令都是通过信道发出去的,不管是发布消息、订阅队列还是接收消息,这些动作都是通过通道完成。因为对于操作系统来说建立和销毁tcp都死非常昂贵的开销,所以引入了信道的概念,以复用一条tcp连接。


5)交换器(Exchange):Exchange用于转发消息,但它不会做存储,如果没有Quene bind到Exchange的话,它会直接丢弃掉Producer发送过来的消息。消息到交换机的时候,交换机会根据路由键转发到对应的队列中。


交换器的功能主要是接收消息并且转发到绑定的队列,交换机不存储消息,在启用ack模式后,交换机找不到队列会返回错误。交换机有四种类型:Direct, topic, Headers and Fanout


Direct:direct 类型的行为是”先匹配, 再投送”. 即在绑定时设定一个routing_key, 消息的routing_key匹配时, 才会被交换器投送到绑定的队列中去.


Topic:按规则转发消息(最灵活)


Headers:设置header attribute参数类型的交换机


Fanout:转发消息到所有绑定队列

二、Rabbitmq服务器的搭建

1、安装Erlang

# yum installerlang

2、安装Rabbitmq-server


#yum installrabbitmq-server


3、配置Rabbitmq-server


1)将rabbitmq的rabbitmq.config.example文件内容替换/etc/rabbitmq/rabbitmq.config


2)编辑rabbitmq配置文件,开启远程访问


将配置文件中"%% {loopback_users, []},",这一行的逗号去掉


3)开启 Web 界面管理


#rabbitmq-plugins enable rabbitmq_management


4)重启 RabbitMQ 服务


#systemctl restart rabbitmq-server


5)开放防火墙端口


#iptables -I INPUT -p tcp -m tcp --dport 15672 -j ACCEPT


#iptables -I INPUT -p tcp -m tcp --dport 5672 -j ACCEPT


#service iptables save


#service iptables restart


4、浏览器访问rabbitmq web界面


浏览器上输入地址:rabbitmq服务器地址:15672。默认管理员账号:guest,密码:guest。登录后的界面如下所示:

20180816210011802.png

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
8天前
|
消息中间件 Java Linux
RocketMQ的下载与安装(全网最细保姆级别教学)
RocketMQ的下载与安装(全网最细保姆级别教学)
142 0
|
8天前
|
消息中间件 网络安全 数据安全/隐私保护
麒麟系统ARM安装rabbitmq
麒麟系统ARM安装rabbitmq
|
8天前
|
消息中间件 编解码 Java
RocketMQ安装和使用
RocketMQ安装和使用
67 1
|
8天前
|
消息中间件 Java Linux
Linux下RabbitMQ安装与使用
Linux下RabbitMQ安装与使用
48 1
|
8天前
|
消息中间件 数据可视化 大数据
【如何安装和配置RabbitMQ(转载)】
【如何安装和配置RabbitMQ(转载)】
32 2
|
8天前
|
NoSQL 关系型数据库 MySQL
涉及rocketMQ,jemeter等性能测试服务器的安装记录
涉及rocketMQ,jemeter等性能测试服务器的安装记录
25 1
|
8天前
|
消息中间件 Shell
rabbitmq安装erlang环境后没生效
rabbitmq安装erlang环境后没生效
772 7
|
8天前
|
消息中间件 网络协议 Linux
用docker方式 安装rabbitmq 并配置MQTT
用docker方式 安装rabbitmq 并配置MQTT
17 0
|
8天前
|
消息中间件 存储 网络协议
初始&安装RabbitMQ
初始&安装RabbitMQ
31 3
|
8天前
|
消息中间件 JavaScript 前端开发
Window系统下载与安装RabbitMQ
Window系统下载与安装RabbitMQ
40 0