RabbitMQ 入门概念

x33g5p2x  于2021-08-23 转载在 Java  
字(1.2k)|赞(0)|评价(0)|浏览(311)

RabbitMQ 入门概念

生产者消费模型

rabbitmq 整体上是一个生产者,消费者模型,主要用于接收,存储,转发消息;可以把次过程简单理解为 商家(producer)将货物(message)给 物流公司 (broker),物流公司再将货物快递给你(consumer)一个过程;

  • 生产者 (producer) 为投递消息的一方; 消息包含2部分,消息体(payload) 和 标签(Lable); 消息体是业务逻辑数据,比如json字符串; 消息标签是消息的描述;
  • 消费者(consumer): 消息的接收方;消费者会连接上Rabbitmq服务器,并订阅队列;当消费者消费消息的时候只是消费消息体,消息标签会在路由的过程中被抛弃,所以队列中只存储消息体;
  • 服务节点(broker):可以简单的理解broker为 RabbitMq的一个实例;

队列

Queue 队列 是 RabbitMq 的 内部对象,用于储存消息; 生产者可以将消息 进行发布,然后会储存至队列, 消费者可以订阅队列,进行消息的消费;多个消费者订阅一个队列时,消息队列中的消息会被轮询给多个消费者;

交换器

交换器(Exchange),用来接收生产者发送的消息并将这些消息路由给服务器中的队列;注意 生产者将消息发给交换器时会附带一个路由键(routing key);

绑定(Binding),用于消息队列和交换器之间的关联。一个绑定就是基于路由键将交换器和消息队列连接起来的路由规则,所以可以将交换器理解成一个由绑定构成的路由表

RabbitMq 中 的 消息交换器有四种类型,分别是 fanout, direct , topic , headers ;

  • fanout: fanout 类型交换器会将所有消息都路由到交换器绑定的队列中;
  • direct:消息中的路由键(routing key)如果和 Binding 中的 binding key 一致, 交换器就将消息发到对应的队列中;
  • topic: topic 交换器通过模式匹配分配消息的路由键属性,将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上;比如 . 用于分隔单词,# 用于模糊匹配一个单词, * 用于匹配多个单词;
  • headers: headers类型转换器 不使用路由规则路由消息,而是使用 消息内容中的headers属性进行匹配, 性能较差,使用不广泛;

信道

信道,多路复用连接中的一条独立的双向数据流通道。信道是建立在真实的TCP连接内地虚拟连接,AMQP 命令都是通过信道发出去的,不管是发布消息、订阅队列还是接收消息,这些动作都是通过信道完成。因为对于操作系统来说建立和销毁 TCP 都是非常昂贵的开销,所以引入了信道的概念,以复用一条 TCP 连接

Virtual Host

虚拟主机,表示一批交换器、消息队列和相关对象。虚拟主机是共享相同的身份认证和加密环境的独立服务器域。每个 vhost 本质上就是一个 mini 版的 RabbitMQ 服务器,拥有自己的队列、交换器、绑定和权限机制。vhost 是 AMQP 概念的基础,必须在连接时指定,RabbitMQ 默认的 vhost 是 /

相关文章

微信公众号

最新文章

更多