RabbitMQ学习笔记(一) —— 基本介绍

RabbitMQ

MQ 全称Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于系统之间的异步通信。RabbitMQ是基于Erlang语言开发的开源消息通信中间件,官网地址:
Messaging that just works — RabbitMQ

RabbitMQ对应的架构如图:
在这里插入图片描述

其中包含几个概念:

  • publisher:生产者,也就是发送消息的一方
  • consumer:消费者,也就是消费消息的一方
  • queue:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理
  • exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。
  • virtual host:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchangequeue

安装

这里是基于Docker来安装RabbitMQ,安装命令:

docker run \
 -e RABBITMQ_DEFAULT_USER=hink \
 -e RABBITMQ_DEFAULT_PASS=123456 \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 --network mynet
 -d \
 rabbitmq
  • -e RABBITMQ_DEFAULT_USER=hink: 设置环境变量 RABBITMQ_DEFAULT_USER 的值为 hink
  • -e RABBITMQ_DEFAULT_PASS=123456: 设置环境变量 RABBITMQ_DEFAULT_PASS 的值为 123456
  • -v mq-plugins:/plugins: 挂载主机上的 mq-plugins 目录到容器内的 /plugins 目录。
  • --name mq: 设置容器的名称为 mq
  • --hostname mq: 设置容器的主机名为 mq
  • -p 15672:15672: 将容器的 15672 端口映射到主机的 15672 端口。(主机的端口:容器的端口)
  • -p 5672:5672: 将容器的 5672 端口映射到主机的 5672 端口。
  • --network mynet: 将容器连接到名为 mynet 的网络。要提前创建好这个网络。
  • -d: 以“后台”模式运行容器。

其中两个端口的解释:

  • 15672:RabbitMQ提供的管理控制台的端口,我们可以访问这个端口进入控制台
  • 5672:RabbitMQ的消息发送处理接口

交换机类型

Exchange(交换机)只负责转发消息,不具备存储消息的能力,因此如果没有任何队列与Exchange绑定,或者没有符合路由规则的队列,那么消息会丢失!

交换机的类型有四种:

  • Fanout:广播,将消息交给所有绑定到交换机的队列。
  • Direct:订阅,基于RoutingKey(路由key)发送给订阅了消息的队列
  • Topic:通配符订阅,与Direct类似,只不过RoutingKey可以使用通配符
  • Headers:头匹配,基于MQ的消息头匹配,用的较少。

1)Fanout

英文翻译是扇出,在MQ叫广播比较合适。它会把消息发送给所有绑定的队列。

2)Direct

根据消息的Routing Key进行判断,只有队列的Routingkey与消息的 Routing key完全一致,才会接收到消息

3)Topic

Topic类型的ExchangeDirect相比,都是可以根据RoutingKey把消息路由到不同的队列。
只不过Topic类型Exchange可以让队列在绑定BindingKey 的时候使用通配符。

BindingKey 一般都是有一个或多个单词组成,多个单词之间以.分割,例如: item.insert

通配符规则:

  • #:匹配一个或多个词
  • *:匹配 一个词

举例:

  • item.#:能够匹配item.spu.insert 或者 item.spu
  • item.*:只能匹配item.spu

尾言

个人学习笔记,有错误处之类的可以帮我指明。

  • 33
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值