一文读懂运维消息中间件之RabbitMQ

本文详细介绍了RabbitMQ的核心概念,包括Message、Publisher、Exchange、Binding、Queue等,并阐述了AMQP中的消息路由机制。此外,还提供了RabbitMQ的单机搭建过程,包括Erlang环境的安装和RabbitMQ的安装与配置。最后,列举了常用的服务管理和数据操作命令,帮助读者更好地管理和操作RabbitMQ。
摘要由CSDN通过智能技术生成

本文概览

(一)、RabbitMQ简介
  1、RabbitMQ简介
  2、RabbitMQ核心概念
    (1)、Message
    (2)、Publisher
    (3)、Exchange
    (4)、Binding
    (5)、Queue
    (6)、Connection
    (7)、Channel
    (8)、Consumer
    (9)、Virtual Host
    (10)、Broker
  3、AMQP中的消息路由
    (1)、direct
    (2)、fanout
    (3)、topic
    
(二)、RabbitMQ搭建
  1、安装Erlang环境
  2、安装RabbitMQ
  
(三)、常用命令
  1、服务管理命令
    (1)、后台方式启动RabbitMQ
    (2)、查询RabbitMQ服务器状态
    (3)、关闭RabbitMQ节点
    (4)、关闭 RabbitMQ 应用程序
    (5)、启动 RabbitMQ 应用程序
    (6)、开启web插件
  2、数据操作命令
    (1)、列出所有队列信息
    (2)、清空指定queue队列的数据
    (3)、删除指定队列
    (4)、列出所有的vhost
    (5)、新建一个名为vh-test的vhost
    (6)、删除一个名为vh-uis-test的vhost
    (7)、新增一个用户
    (8)、删除一个用户
    (9)、修改用户的密码
    (10)、查看当前用户列表
    (11)、为用户test授予vh-test的vhost权限 
    (12)、重置RabbitMQ节点
    (13)、查看交换器
    (14)、查看绑定

(一)、RabbitMQ简介

1、RabbitMQ简介

        消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。

        AMQP(Advanced Message Queue Protocol),即高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。

        RabbitMQ 是一个由 Erlang 语言开发的 、实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。

2、RabbitMQ核心概念

(1)、Message

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

(2)、Publisher

        消息的生产者,也是一个向交换器发布消息的客户端应用程序。

(3)、Exchange

        交换器,用来接收生产者发送的消息并将这些消息路由给服务器中的队列。

(4)、Binding

        绑定,用于消息队列和交换器之间的关联。一个绑定就是基于路由键将交换器和消息队列连接起来的路由规则,所以可以将交换器理解成一个由绑定构成的路由表。

(5)、Queue

        消息队列,用来保存消息直到发送给消费者。它是消息的容器,也是消息的终点。一个消息可投入一个或多个队列。消息一直在队列里面,等待消费者连接到这个队列将其取走。

(6)、Connection

        网络连接,比如一个TCP连接。

(7)、Channel

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

(8)、Consumer

        消息的消费者,表示一个从消息队列中取得消息的客户端应用程序。

(9)、Virtual Host

        虚拟主机,表示一批交换器、消息队列和相关对象。虚拟主机是共享相同的身份认证和加密环境的独立服务器域。每个 vhost 本质上就是一个 mini 版的 RabbitMQ 服务器,拥有自己的队列、交换器、绑定和权限机制。vhost 是 AMQP 概念的基础,必须在连接时指定,RabbitMQ 默认的 vhost 是 / 。

(10)、Broker

        表示消息队列服务器实体。

3、AMQP中的消息路由

        AMQP 中消息的路由过程和 Java 开发者熟悉的 JMS 存在一些差别,AMQP 中增加了 Exchange 和 Binding 的角色。生产者把消息发布到 Exchange 上,消息最终到达队列并被消费者接收,而 Binding 决定交换器的消息应该发送到那个队列。

        Exchange分发消息时根据类型的不同分发策略有区别,目前共三种常见类型:direct、fanout、topic 。

(1)、direct

消息中的路由键(routing key)如果和 Binding 中的 binding key 一致, 交换器就将消息发到对应的队列中。路由键与队列名完全匹配,如果一个队列绑定到交换机要求路由键为“dog”,则只转发 routing key 标记为“dog”的消息,不会转发“dog.puppy”,也不会转发“dog.guard

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值