RabbitMQ - noonecare/opensourcebigdatatools GitHub Wiki

RabbitMQ

RabbitMQ 是个单纯的消息队列。RabbitMQ 消息分发的机制是: Producer 产生消息, 消息传给 exchange, exchange 经过 Route(算法,主要是根据 exchange type 和 message 只带的 routing key 来决定消息如何 route) 把消息传给某些 queue,Consumer 消费 queue 中的数据。

消息如何 Route

  • exchange key 有四种 HEAD, Direct, Fanout, Topic(Topic 复杂但是能实现所有的 route 功能)
  • Topic Exchange
  • 消息中有 routing key 属性
  • Queue 中也有 binding key 属性(可能是个通配符)
  • binding key 中经常带有通配符: *
  • 如果一条消息的 routing key 匹配 Queue 的 binding key, 那么这条消息就被 route 到这个 queue 中
  • Fanout Exchage
  • 不管 routing key 属性,直接把所有消息,route 给每个 queue。
  • Direct Exchange
  • 把 routing key 为 a 的消息,发送给 name 为 a 的queue。
  • Head Exchange