RabbitMQ简介
在介绍RabbitMQ之前实现要介绍一下MQ,MQ是什么?
MQ全称是Message Queue,可以理解为消息队列的意思,简单来说就是消息以管道的方式进行传递。
MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,
而另一端则可以读取或者订阅队列中的消息
RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言的。它可以用于大型软件系统各个模块之间的高效通信,支持高并发,支持可扩展。
Erlang
Erlang编程语言最初目的是进行大型电信交换设备的软件开发,是一种适用于大规模并行处理环境的高可靠性编程语言
AMQP
AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
AMOP有几个重要的概念:
Server:Broker、RabbitMQ Server,实现 AMOP 实体服务,接受客户端的连接
Conneciton:链接,应用程序与 Server 的网络连接
Channel:网络信道,进行消息读写的通道,客户端可以建立多个 Channel,每个 Channel 就是一个会话
Message:消息,服务器和应用程序之间传输的数据,由 Properties 和 Body 组成。Properties 用于修饰消息,比如消息优先级、延迟等,Body 是消息体
Virtual host:虚拟地址,用于逻辑隔离,是最上层的路由。一个虚拟地址中可以有多个 Exchange 和 Queue,但不允许同名
Exchange:交换机,用于接收生产者的消息,根据 Routing key 转发到 Queue
Queue:Message queue,消息队列,保存消息并转发给消费者,消费者监听这个队列达到接收消息的目的
Bingding:Exchange 和 Queue 之间的虚拟连接,可以包含多个 Routing key
消息流程:
在了解消息通讯之前首先要了解3个概念:生产者、消费者和代理。
生产者:消息的创建者,负责创建和推送数据到消息服务器;
消费者:消息的接收方,用于处理数据和确认消息;
代理:就是RabbitMQ本身,用于扮演“快递”的角色,本身不生产消息,只是扮演“快递”的角色。
生产者把消息投递到 RabbitMQ server,在投递时需要指明是哪个 Exchange 和 Routing key,因为 Queue 和 Exchange 通过 Routing key 来建立规则,所以消息一经生产就能投递到具体的队列中,客户端通过监听具体的队列从而获得这个队列的消息。(消息其实是先到 Server 再到 Virtual host 再到 Exchange 再到 Queue)
看到上面的解释,最难理解的路由键和绑定键了,那么他们具体怎么发挥作用的,请看下图:
内容摘取子他出,如有侵权,请联系删除
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。