Neurohazard
暮雲煙月,皓首窮經;森羅萬象,如是我聞。

【笔记】RabbitMQ 的一些基本概念

wpadmin~September 2, 2018 /Software Engineering

【笔记】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

Your email address will not be published. Required fields are marked *