rabbitMQ--架构模型

架构模型如下:
rabbitMQ--架构模型_第1张图片
名词解释

  • Broker:rabbitmq服务
  • Virtual Host:虚拟主机,用于进行逻辑隔离(相当于mysql中的schema),一个Virtual Host可以包含多个不同的exchange和queue(名称不一样)

新增virtual Host

  1. 管理页面添加
    rabbitMQ--架构模型_第2张图片
  2. 命令添加
rabbitmqctl add_vhost vhostpath
  • Exchange:交换机,生产者将消息发送到交换机,交换机根据路由key,将消息分发到对应的queue(队列)。

  • Queue:用来存贮消息,每个队列都会绑定至少一个交换机,若没有指定,则绑定默认交换机。
    rabbitMQ--架构模型_第3张图片

  • Binding:绑定,消息队列需要将交换机和队列绑定,一般指定routingKey,来确定消息需要路由的队列。
    rabbitMQ--架构模型_第4张图片

  • routingKey:消息的路由规则。
    rabbitMQ--架构模型_第5张图片

交换机模式

exchange属性

  • Name: 名称
  • Type:类型(Direct、Topic、Fanout、Headers)
  • Durability:是否持久化,重启后是否依然存在,true为持久化
  • Auto Delete:是否自动删除,所有队列都删除后,该交换机是否自动删除
  • Internal:当前Exchange是否用于RabbitMQ内部使用,默认为false
  • Argument:扩展参数,用于扩展AMQP协议自制定化使用

rabbitMQ--架构模型_第6张图片

类型(Direct、Topic、Fanout、Headers)

Direct(直连交换机)

消息被转发到 RoutingKey 中指定的 Queue。

Topic(主题交换机)

交换机将消息的routingKey和队列的bindkey进行模糊匹配,将消息转发到符合规则的queue。所以该模式下,队列需要绑定一个topic。

可以使用通配符进行模糊匹配

“#” 匹配零个或多个词 ,"*" 匹配一个词

“log.#” 能够匹配到 “log.info.oa” ,“log.*” 能够匹配到 “log.erro”

rabbitMQ--架构模型_第7张图片

Fanout(广播交换机)

将消息发送到与该交换的绑定的所有队列中

你可能感兴趣的:(rabbitMQ,rabbitmq)