RabbitMQ核心概念

1. 基本概念

  • broker: server,消息队列服务器的实体,他是一个中间件应用,负责接受消息生产的消息,然后将消息发送之消息接受之或者其他的broker.

  • Exchange: 消息交换机,是消息到达的第一个地方,消息通过它指定的路由规则,分发到不同的消息队列中。

  • Queue: 消息队列

  • Binding: 绑定,作用就是将exchange和队列进行绑定。

  • Routing key:路由关键字,Exchange根据该关键字进行指定的消息投送。

  • Virtual host: 虚拟主机,通过虚拟主机来继续对用户进行不同权限的分离。通过Virtual host来进行隔离exchange和Queue,不同的vitual host可以有相同的exchange和Queue

  • Connection:连接。

  • Channel: 消息通道,所有消息的流转都是通过channel,每个channel代表的是一次会话。

  • Producer: 消息的生产者。

  • consumer: 消息的消费者。

2.消息投递到最后消费大致流程

producer(生产者)和RabbitMQ服务器建立连接,通过Channel向Exchange发送消息,Exchange通过Routing key将消息路由到队列中(Queue),consuemr(消费者)绑定指定的队列(Queue)接受消息.

3. Exchange交换机的类型。

  • fanout: 广播模式,该模式下的routingKey会被忽略,此时会使用空字符串来进行代替。
  • direct: 完全根据key来进行匹配。此时的Routingkey必须完全匹配,如果此时Routing key匹配不到,消息将会丢弃。
  • topic: 匹配模式。通过匹配符号来进行匹配。例如*匹配一个词,#匹配一个或多个。
  • headers: 通过header来匹配。Headers是一个键值对。发送者在发送的时候定义一些键值对,接收者也可以在绑定队列的时候也传入一些键值对。亮着键值对匹配的话,则可以接受到消息。匹配方式有两种any和all>着两种方式都在在接收端必须用键值"x-mactch"来定义。all代表定义的多个键值对都要满足,而any则代码只要满足一个就可以了。fanout,direct,topicexchange的routingKey都需要要字符串形式的,而headers exchange则没有这个要求,因为键值对的值可以是任何类型。

猜你喜欢

转载自blog.csdn.net/m0_37779570/article/details/83625905