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版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
消息中间件 Linux API
centos7 安装rabbitmq自定义版本及配置
centos7 安装rabbitmq自定义版本及配置
|
4月前
|
消息中间件 关系型数据库 MySQL
入职必会-开发环境搭建52-RabbitMQ安装
RabbitMQ 是一款开源的消息队列软件,最初由 LShift 公司开发,后来成为 Pivotal Software(现在是 VMware 的一部分)的一部分。它是基于 AMQP(高级消息队列协议)标准的消息中间件,旨在帮助不同应用程序之间进行可靠的数据传输和通信。 RabbitMQ 提供了高度灵活的消息队列机制,可以在分布式环境中实现应用程序之间的异步通信。它支持多种消息传递模式,包括点对点、发布/订阅、请求/响应等,能够满足各种复杂的消息通信需求。
入职必会-开发环境搭建52-RabbitMQ安装
|
4月前
|
消息中间件 存储 Linux
RabbitMQ安装及配套Laravel使用
RabbitMQ安装及配套Laravel使用
98 4
|
1月前
|
消息中间件 数据安全/隐私保护 Docker
Docker安装rabbitmq
如何使用Docker安装和配置RabbitMQ服务,包括拉取RabbitMQ镜像、创建容器、配置持久化和访问管理界面的步骤。
91 0
Docker安装rabbitmq
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
2月前
|
消息中间件 Linux
centos7安装rabbitmq
centos7安装rabbitmq
|
3月前
|
消息中间件 Docker 容器
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
这篇文章提供了RabbitMQ的安装和基本使用教程,包括如何使用Docker拉取RabbitMQ镜像、创建容器、通过浏览器访问管理界面,以及如何创建交换机、队列、绑定和使用direct、fanout和topic三种类型的交换器进行消息发布和接收的测试。
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
|
2月前
|
消息中间件 Linux
linux之centos安装rabbitmq
linux之centos安装rabbitmq
|
3月前
|
存储 Ubuntu 安全
在Ubuntu 16.04上安装和保护Mosquitto MQTT消息代理的方法
在Ubuntu 16.04上安装和保护Mosquitto MQTT消息代理的方法
102 1
|
3月前
|
Linux 数据安全/隐私保护 Docker
MQTT(EMQX) - Linux CentOS Docker 安装
MQTT(EMQX) - Linux CentOS Docker 安装
292 0