RabbitMQ 面试准备
RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。
AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,
为 面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、
开发语言 等条件的限制。
RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、
高可 用性等方面表现不俗
具体特点包括:可靠性、灵活的路由、消息集群、高可用、多种协议、多语言客户端、管理
界面(Management UI)、跟踪机制(Tracing)、插件机制(Plugin System)
Publisher:
消息的生产者,也是一个向交换器发布消息的客户端应用程序。
Exchange(将消息路由给队列 ):
交换器,用来接收生产者发送的消息并将这些消息路由给服务器中的队列。
Binding(消息队列和交换器之间的关联):
绑定,用于消息队列和交换器之间的关联。一个绑定就是基于路由键将交换器和消息队列连
接起来的路由规则,所以可以将交换器理解成一个由绑定构成的路由表。
Queue:
消息队列,用来保存消息直到发送给消费者,它是消息的容器,也是消息的终点;一个消息
可投入一个或者多个队列中,然后一直在队列中等待,直到消费者连接到这个队列将其取走。
Consumer:
消息的消费者,表示一个从消息队列中取得消息的客户端应用程序。
Virtual Host:
虚拟主机,表示一批交换机,消息队列和相关对象。虚拟主机是共享相同身份认证和加密环
境的独立服务器域。
Exchange 类型:
Direct 键(routing key)分布:
消息中的路由键(routing key)如果和 Binding 中的 binding key 一致, 交换器就将消息
发到对应的队列中。它是完全匹配、单播的模式。