• Home
  • Articles
    • 日志
    • 妍小言
    • 舒小书
    • 浩然说
    • 生活日记
  • All Tags

RabbitMq exchange

03 May 2018

Reading time ~1 minute

RabbitMq Exchange

RabbitMq Exchange负责Message和具体的Queue之间的路由关系,当rabbitMq接收到一个消息,首先是由Exchange处理,如果找不到对应的Exchange,则回调ConfirmCallback,ack返回false。稍微扩展一点,如果最终一个消息不能被路由到任何一个queue,则会回调ReturnCallback。

四种Exchange类型

direct exchange

这种exchange会根据routingKey直接匹配对应的queue name,将Message和queue做一一对应,默认的exchange就是该类型。

fanout exchange

这种exchange会直接将message广播到所有的queue中去,不管你指定的routingKey是什么。

headers exchange

这种exchange同样会忽略routingKey,而是根据binding中的headers配置的key-value键值对来进行路由,而匹配规则有两种:

  • x-match = all :表示所有的键值对都匹配才能接受到消息
  • x-match = any :表示只要有键值对匹配就能接受到消息

topic exchange

这种exchange需要特定的routingKey,必须是小数点隔开的一系列标识符,而binding则可以使用通配符,比如*和#。可以建立匹配规则为*.rabbit.*的和queueA的binding,当routingKey符合该该binding的验证规则时,则可以将message发送到对应的queueA中。



rabbitMq