RabbitMQ-我的学习路线-原理篇
RabbitMQ是一个流行的开源消息队列系统,是AMQP(高级消息队列协议)标准的实现,由以高性能、健壮、可伸缩性出名的Erlang语言开发,并继承了这些优点。
需要先了解的一些术语:
Producer:消息的产生者
Connection:建立连接,包括消息发送到Exhange,消费者从消息队列获取信息
Channel:建立通道,包括消息发送到Exhange,消费者从消息队列获取信息
Exchange:负责接受产生的消息,并把消息路由到对应的消息队列(Queue)
Binding:绑定是你设置的用来连接一个队列和交换机的连接
RouteKey:路由键,将Exchange中的消息路由到对应的消息队列(Queue)的一个属性
Queue:消息队列,缓存消息,供消费者取用
Vhost:Exchange + Binding + RouteKey + Queue
Broker:Vhosts,即多个Vhost
Customer:消息消费者
消息发布之后,信息不会直接到消费者直接处理,而是采用代理的方式,先发送到Exchange上,Exchange通过RouteKey把各个消息分发到Queue中,然后消费者从Queue中取用并处理。
RabbitMQ is a message broker: it accepts and forwards messages. You can think about it as a post office: when you put the mail that you want posting in a post box, you can be sure that Mr. or Ms. Mailperson will eventually deliver the mail to your recipient. In this analogy, RabbitMQ is a post box, a post office and a postman.(RabbitMQ是一个消息掮客(中间商),负责接收和发送消息,你可以把它想象成一个邮局:当你想寄邮件时,把邮件放到邮箱内,你能确定邮递员可以准确的把你的邮件送到指定收件人那里,类似,RabbitMQ是邮箱,邮局,邮递员的综合体)
其实,可以把Exchange当作邮局,邮局收到信件之后,对邮件进行分发处理,最终送到收件人手里
Producer:发件人
Message:邮件
Channel:收件员和发件员
Exchange:邮局
RouteKey:邮件上的姓名地址
Binding:快递运输车
Queue:快递柜
Customer:收件人