RabbitMQ交换机类型

一、Direct交换机:转发消息到routingKey指定队列(彻底匹配,单播)。

routingKey与队列名彻底匹配,若是一个队列绑定到交换机要求路由键为“dog”,则只转发routingkey标记为dog的消息,不会转发dog.puppy,也不会转发dog.guard等。 spa


二、Topic交换机:按规则转发消息(最灵活,组播)

 Topic类型交换机经过模式匹配分配消息的routing-key属性。将路由键和某个模式进行匹配,此时队列须要绑定到一个模式上。 server

它将routing-key和binding-key的字符串切分红单词。这些单词之间用点隔开。它一样也会识别两个通配符:符号“#”和符号“*”。#匹配0个或多个单词,*匹配很少很多一个单词。 队列

例如,binding key:*.stock.#匹配routing key: usd.stock和eur.stock.db,可是不匹配stock.nana。 路由

例如,“audit.#”可以匹配到“audit.irs.corporate”,可是“audit.*”只会匹配到“audit.irs”。 字符串


三、Fanout交换机:转发消息到全部绑定队列(最快,广播)

fanout交换机不处理路由键,简单的将队列绑定到交换机上,每一个发送到交换机的消息都会被转发到与该交换机绑定的全部队列上。 it

很像子网广播,每台子网内的主机都得到了一份复制的消息。Fanout交换机转发消息是最快的。 命名


四、Note

  • 若是没有队列绑定在交换机上,则发送到该交换机上的消息会丢失。
  • 一个交换机能够绑定多个队列,一个队列能够被多个交换机绑定。
  • 还有一些其余类型的交换机类型,如header、failover、system等,如今在当前的RabbitMQ版本中均未实现。
  • 由于交换机是命名实体,声明一个已经存在的交换机,可是试图赋予不一样类型是会致使错误。客户端须要删除这个已经存在的交换机,而后从新声明而且赋予新的类型。
  • 交换机的属性:
    • 持久性:若是启用,交换机将会在server重启前都有效。
    • 自动删除:若是启用,那么交换机将会在其绑定的队列都被删掉以后删除自身。
    • 惰性:若是没有声明交换机,那么在执行到使用的时候会致使异常,并不会主动声明。
相关文章
相关标签/搜索