【笔记】RabbitMQ 的一些基本概念
Contents
参考资料
RabbitMQ in 5 Minutes
RabbitMQ
RabbitMQ is a message broker that implements AMQP (Advanced Message Queuing Protocol, AMQP)
AMQP standardizes messaging using Producers, Broker and Consumers.
使用消息队列的优势是增加松耦合 (loose coupling) 与 可扩展性(scalability)
基本概念
Producer 不直接发送 Message 给 Consumer, 而是先发给 Exchange, 之后再由 Exchange 转发
Publishing
Producer 发布一个 Message 给 Exchange, Exchange 根据一定规则将 Message 转发给 queue .
Consuming
Consumer 从一个 queue 中取出一个 Message, 并进行处理.
rabbitmq_amqp_1.png
Exchange
当只有一个 queue 时, Exchange 这个结构看起来无关紧要。
但当 queue 的数量变得更多时, Exchange 作为一个 消息调度转发中心 的效果便体现了出来。
rabbitmq_amqp_2.png
Exchange 与 queue 之间的关联叫 binding, 使用一个 binding key 来映射。
当 Producer 发送(publish)消息时,则需要设置一个 routing key。当 Exchagne 的类型为 direct 时,该消息会被转发至其 binding key 与 routing key 匹配的 queue.
An Exchange connects a queue via a binding and a binding key.
rabbitmq_amqp_3.png
To send a message, the Producer needs to specify a routing key.
rabbitmq_amqp_4.png
Exchange 的类型
Fanout, Direct, Topic, Header, Default
Fanout
无视 routing key, 将消息 (复制) 转发给所有队列。
rabbitmq_amqp_5.png
Direct
当 routing key == binding key 时, 转发消息。
rabbitmq_amqp_6.png
Topic
当 routing key 与 binding key 部分匹配时,转发消息。
(routing_key=”red.*”, binding_key=”red.green”)
rabbitmq_amqp_7.png
Header
使用 message header 来替代 routing key
rabbitmq_amqp_8.png
Default (nameless) exchange
当 routing key == queue name 时, 转发消息。
rabbitmq_amqp_9.png
RabbitMQ Web Admin
RabbitMQ in 5 Minutes
3:36 后为 RabbitMQ Web Admin 的使用指南
新建 queue
新建 Exchange
新建 binding
获取 message
Leave a Reply