前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rabbit的基础概念

Rabbit的基础概念

作者头像
Java学习录
发布2019-07-01 15:53:12
4380
发布2019-07-01 15:53:12
举报
文章被收录于专栏:Java学习录Java学习录

作为金融级必选的消息中间件,RabbitMQ 凭借其高可靠、易扩展、高可用及丰富的功能等特性受到越来越多企业的青睐,本篇文章简单介绍一下在初次学习RabbitMQ时涉及的一些基础的概念以及名词的解释

首先看一下RabbitMQ的消息流转图:

简单解释一下上方涉及的几个组件

Producer生产者

消息发送方,生产者创建消息,然后发布到 RabbitMQ 中

消息

一个消息一般是由两部分组成的:消息体和标签

  • 消息体也可以称之为 payload ,就是我们需要MQ为我们传输的消息,例如JSONString、String、Byte等。
  • 标签:消息的详细参数, 比如目的交换器名称、路由键、延时时间等

Broker

可以看作 RabbitMQ 服务

交换器Exchange

生产者将消息发送到交换器,由交换器将消息路由到一个或者多个队列中,如果路由不到,或许会返回给生产者,或许直接丢弃

RabbitMQ 常用的交换器类型有 anout、direct、topic、headers

  • fanout会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中
  • direct类型的交换器会把消息路由到那些BindingKey和RoutingKey完全匹配的队列中
  • topic与direct类型的交换器相似也是将消息路由到BindingKey RoutingKey相匹配的队列中但是与direct 类型不同的是topic 类型的交换器在匹配规则上进行了扩展它约定:RoutingKey和BindingKey为一个点号"."分隔的字符串且BindingKey中可以存在两种特殊字符串"*"和"#",用于做模糊匹配
  • headers类型的交换器不依赖于路由键的匹配规则来路由消息,而是根据发送的消息内容中headers属性进行匹配。在绑定队列和交换器时制定一组键值对 当发送消息到交换器时,RabbitMQ会获取到该消息的 headers (也是一个键值对的形式) ,对比其中的键值对是否完全匹配队列和交换器绑定时指定的键值对,如果完全匹配则消息会路由到该队列,否则不会路由到该队列

绑定Binding

将交换器与队列的关系就是通过绑定关联起来的,将一个队列绑定到交换机的时候一般会指定一个绑定键BindingKey ,这样当生产者投递到交换机的消息就会根据消息标签中的BindingKey 投递到对应的队列中

路由键RoutingKey

在使用direct和topic这两种交换机的时候生产者想要准确的投递到队列中就必须指定RoutingKey

队列Queue

队列是 RabbitMQ 的内部对象,用 于存储消息,且只存储消息体。因为消息的标签是存储的消息的路由、延迟等信息,所以当交换机把消息投递到队列时这些标签就没有作用了,也就被丢弃了。

与Kafka将消息存储在 topic 中不同的是RabbitMQ 中消息都只能存储在队列中

消费者Conumer

消息接受方。消费者连接到 RabbitMQ 服务器,并订阅到队列上 。

消费者只会消费到消息体不知道消息的生产者是谁,当然也不知道Broker

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档