RabbitMQ消息队列(一) 入门

一、RabbitMQ相关概念

1.架构简介

 RabbitMQ主要分为服务端和客户端两大块。

 服务端主要由服务节点(Broker)构成,服务节点主要包含交换器(Exchange)、队列(Queue)

 客户端向服务端发送和接收数据,分为生产者(Producer)、消费者(Consumer)

                                                                                    架构图

                                                                                            数据流程图

2.消息

消息一般包含2个部分:消息体(payload)和标签(Label)。

消息体一般是一个带有业务逻辑结构的数据,比如一个JSON字符串。

标签用来表述这条消息,比如一个交换器的名称和一个路由键。生产者把消息交由RabbitMQ,RabbitMQ之后会根据标签把消息发送给感兴趣的消费者。

3.生产者和消费者

生产者和消费者都是MQ的客户端。生产者创建消息,然后发布到 RabbitMQ 中;消费者订阅到相应的队列上进行消息的消费。

4.队列

队列(queue),是RabbitMQ 的内部对象,用于存储消息。多个消费者可以订阅同一个队列,这时队列中的消息会被平均分摊 (Round-Robin ,即轮询)给多个消费者进行处理,而不是每个消费者都收到所有的消息井处理,如下图。

                                                                       队列-多消费者轮询

RabbitMQ不支持队列层面的广播消费,如果需要广播消费,需要在其上进行二次开发,处理逻辑会变得异常复杂,同时也不建议这么做。
 

5.交换器、路由键、绑定

交换器(Exchange):负责将消息路由到一个或者多个队列中。如果路由不到,或许会返回给生产者,或许直接丢弃。这里可以将 RabbitMQ 中的交换器看作一个简单的实体。

路由键(RoutingKey):生产者将消息发给交换器 的时候,用这个来指定消息的路由规则(即消息最终被投递到哪个消费者),需要与交换器类型和绑定键 (BindingKey) 联合使用才能最终生效。

绑定(Binding):在确定了路由键、交换器的前提下,再指定一个绑定键(BindingKey )将交换器和队列进行绑定,这样就能确定消息投递的完整路由。绑定依赖于交换器类型,具体在下一小点(交换器类型)讲述。

6.交换器类型

RabbitMQ 常用的交换器类型有 fanout 、 direct 、 topic 、 headers 这四种,下面一一阐述。

fanout 把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中。

direct 把消息路由到那些BindingKey和RoutingKey完全匹配的队列中。

 

topic 与 direct 类型的交换器相似,在匹配规则上进行了扩展,用“*”和“#”来进行模糊匹配。

          1.RoutingKey与BindingKey为一个点号“.”分割的字符串,分割的每一部分为一个单词。

          2.BindingKey中存在“*”和“#”,RoutingKey根据匹配规则(“*”匹配一个单词,“#”匹配多个单词(可以是零个))将消息投递到相              应绑定的队列中。

            例如下图中,三个BindingKey分别为*.rabbitmq.*、*.*.client、com.#,若现在有一个RoutingKey为com.rabbitmq.client,他               将被投递到Queue1和Queue2队列中。

 

         
                                                                                                   topic类型交换器

 headers 功能和direct类似,只是根据发送的消息内容中headers属性进行匹配,性能比较差,一般不会用。


 

二、amqp协议

待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值