RabbitMQ的基本概念

RabbitMQ

官方: https://www.rabbitmq.com/

作用:

  • 异步处理: 异步处理业务, 快速响应
  • 应用解耦: 多个应用之间互相解耦, 相互依赖减少
  • 流量控制: 流量削峰, 减少大并发情况下的用户请求,起到为服务器缓冲的作用

概念:

publicsher: 生产者

  • 发送消息

Message: 消息

  • 消息本身分为: 消息头+ 消息体 +route_key

Exchange: 交换机

  • 接受消息, 与队列进行绑定(Binding),
  • 交换机根据 与队列之间的绑定关系确定路由键(route_key), 进行存储

Queue: 消息队列

  • 存储消息

Consumer: 消费者

  • 消费消息,

VHost: 虚拟主机 包含交换机和队列

  • 用于隔离不同平台和语言, 每个虚拟主机之间互不影响,

备注:

  • 生产者消费者 先与队列建立连接(Connection),在连接中使用通道(Channel)进行消息的发送和消费,每个应用只需建立一个连接即可,所有其他消息的操作全部使用通道完成

在这里插入图片描述

队列形式:

  • 点对点模式:

    • 消息发送者准备消息指定一个队列,并放入队列, 消息消费者从指定队列中获取消息消费
  • 发布订阅模式:

    • 发送者把消息放入主题, 所有订阅主题的消费者都会监听到消息并消费, 点对点是一个消息只能被一个消费者消费
  • 区别:

    • 相同: 都可以有多个发送者和消费者,
    • 不同: 点对点中队列的消息一个消息只能被一个消费者消费,而订阅模式, 所有监听相同主题的消费者都能消费

协议标准:

  • JMS(Java Message Service): java api
    • 不跨语言, 不跨平台
    • 两种消息模型
    • 多种消息类型 text map bytes stream object
  • AMQP(Advanced Message Queuing Protocol): 网络线级协议
    • 跨语言,平台
    • 五种消息模型
    • 一种消息类型 byte[]
  • 当全平台使用Java语言开发时可以使用JMS, 有其他语言时,可以使用AMQP

Docker 安装abbitMQ

docker run -d 
--name rabbitmq 
-p 5671:5671  AMQP端口
-p 5672:5672  AMQP端口
-p 4369:4369  Erlang端口
-p 25672:25672  Erlang端口
-p 15671:15671  
-p 15672:15672 web管理后台端口
rabbitmq:3-management 镜像名称

docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:3-management

后台管理系统默认用户名密码 guest guest

交换机类型(exchange)

  • direct: 直接交换机
    • route_key根据绑定关系(Banding)精确匹配,
  • fanout: 广播发布订阅交换机
    • 把消息广播到所有与当前交换机有绑定关系的队列
  • topic: 主题发布订阅交换机
    • 交换机通过路由键(route_key) 对队列绑定的匹配模式进行对比, 符合匹配的获取消息
    • 使用. 对路由键和绑定键进行隔离, 使用通配符进行对比: ‘#’ 匹配0 或多个单词 ,’ * '匹配一个单词
  • headers: 性能较低, 不经常使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值