2-rabbitmq概念

1 基本概念

  • Connection连接,代表一个socket连接。
  • Channel通道,是多路复用连接中的一条独立的双向数据流通道,消息发布接受订阅都依靠通道完成。
  • Producer生产者,发送消息。
  • Consumer消费者,接收消息。
  • Queue队列,缓存生产者产生的消息并传递给消费者,只有一个消费者能够收到消息。RabbitMQ中的消息只能存储在队列中。多个消费者可以订阅同一个队列,这时队列中的消息会被平均分摊(即轮询)给对各消费者进行处理,而不是每个消费者都收到同样的消息。RabbitMQ不支持队列层面的广播消费,如果需要广播消费,需要在其上进行 次开发,处理逻辑会变得异常复杂,同时也不建议这么做。
  • Exchange交换机,在rabbitmq中,生产者并不会直接发送消息到queue,而是将消息发送到exchangeexchange并不会缓存消息,但是它能够决定消息是传递给某个特定的queue,还是传递给多个queue,还是直接销毁,这个规则rule是由exchangetype定义的。
  • Binding绑定,将queue绑定到exchange,这样exchange就知道可以向哪些queue转发消息了。

2 Exchange的type

根据路由过程不同,exchangetype可分为fanoutdirecttopicheaders

2.1 fanout

广播式交换机。

消息M发送到广播式交换机X上,交换机X会将消息M分发给所有绑定到这个交换机X上的队列Q,每个队列Q都会收到消息,类似广播。如果广播式交换机X没有被任何队列Q绑定,那么到达交换机X的消息将被丢弃。

  • 这种模式下不需要指定Routing Key路由键,就算指定了也会被忽视。

  • 一个交换机可以绑定多个队列queue,一个queue可同时与多个exchange交换机进行绑定。

在这里插入图片描述

2.2 direct

直接交换机。

一个队列Q通过路由键K绑定到直接交换机X,当一个消息M和路由键K发送到直接交换机X上,直接交换机X会根据路由键K将消息M分发到队列Q,没有匹配到任何路由键的消息将被丢弃。

  • 一个队列可以关联多个路由键,一个路由键可以被多个队列关联。

在这里插入图片描述在这里插入图片描述

2.3 topic

通配符交换机。

队列Q通过Binding Key绑定到通配符交换机X,任何发送到交换机X的消息M,将会对它的Routing KeyBinding Key进行模式匹配,消息将会被转发给匹配的队列QBinding Key支持#*通配符。

  • 生产者发送消息的时候需要指定Routing KeyKey不能是任意自定义的形式,而必须是由.隔离的一系列wordKey最大限制255字节。
  • 同时绑定ExchangeQueue的时候也需要指定Binding Key,与Routing Key遵循相同的命名规则,但是可以使用#*通配符。
    • #表示匹配0个或多个word*表示匹配1word
    • 两个.之间是一个word
  • 如果Exchange没有发现能够与Routing Key模糊匹配的队列Queue,则消息将会被丢弃。
  • 如果Binding Key*#通配符都不存在,则Routing KeyBinding Key相等的时候才转发此消息,类似Direct Exchange;如果Binding Key中只有#或者#.#通配符,则消息全部被转发,类似Fanout Exchange

在这里插入图片描述

2.4 headers

headers类型的交换器不依赖于路由键的匹配规则来路由消息,而是根据发送的消息内容中headers属性进行匹配。在绑定队列和交换器时指定一组键值对,当发送消息到交换器时,RabbitMQ会获取到该消息的headers (也是一个键值对的形式),对比其中的键值对是否完全匹配队列和交换器绑定时指定的键值对,如果完全匹配则消息会路由到该队列,否则不会路由到该队列。headers 类型的交换器性能会很差,而且也不实用,基本上不会看到它的存在。

3 RabbitMQ六种工作模式

RabbitMQ有五种工作模式:

  • 简单队列模式(Simple Queue
  • 工作队列模式(Work Queues
  • 发布/订阅模式(Publish / Subscribe
  • 路由模式(Routing
  • 主题模式(Topics
  • RPC模式(RPC
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值