美文网首页
RabbitMQ base 01

RabbitMQ base 01

作者: ands999 | 来源:发表于2019-05-02 17:04 被阅读0次

RabbitMQ特点

  1. 基于erlang语言开发,因此也具有高可用、高并发的优点。
  2. 健壮、稳定。
  3. 消息确认机制和持久化机制,可靠性高。
  4. AMQP

基础架构

AMQP 里主要有两个组件:Exchange 和 Queue (在 AMQP 1.0 里还会有变动),这两者都在 Server 端,又称作 Broker ,而蓝色的则是客户端,通常有 Producer 和 Consumer 两种类型。

几个概念

Queue(消息队列),提供了FIFO的处理机制,具有缓存消息的能力。队列消息可以设置为持久化,临时或者自动删除。

  • 设置为持久化的队列,queue中的消息会在server本地硬盘存储一份,防止系统crash后数据丢失。
  • 设置为临时的队列,queue中的消息在系统重启之后就会丢失。
  • 设置为自动删除的队列,当没有用户连接时,队列中的数据会被自动删除。

Exchange(交换机),从连接通道(Channel)接收消息后,按照预置的路由规则发送到队列。一个exchange可以绑定多个queue,producer在传递消息的时候会传递ROUTING_KEY,Exchange根据ROUTING_KEY按照特定的路由算法,将消息路由到指定的queue。和Queue一样,Exchange也可设置为持久化,临时或者自动删除。
Exchange的4种类型:

  • direct(直接交换器),工作方式类似于单播,Exchange会将消息发送给完全匹配ROUTING_KEY的Queue。
  • fanout(广播式交换器),不管消息的ROUTING_KEY设置为什么,Exchange都会将消息转发给所有绑定的Queue。
  • topic(主题交换器),工作方式类似于组播,Exchange会将消息转发和ROUTING_KEY匹配模式相同的所有队列。( * 表是匹配一个任意词组,#表示匹配0个或多个词组)。
  • headers消息体的header匹配(ignore)。

每种规则用来做匹配的CPU开销是不同的,所以设置了4种交换器。

Binding(绑定),就是路由规则,告诉交换机将何种类型的消息发送到某个队列中。是将一个 Exchange 和一个 Queue 绑定起来。
virtual host(虚拟主机),在rabbitmq server上可以创建多个虚拟的message broker,又叫做virtual hosts (vhosts)。vhost本质上是mini-rabbitmq server,管理自己的exchange和bindings。vhost相当于物理的server,可以为不同app提供边界隔离,使得应用能安全的运行在不同的vhost实例上,相互之间不会干扰。producer和consumer连接rabbit server需要指定一个vhost。

消息传递过程

  1. 消费者: 创建connection。
  2. 消费者: 创建信息通道channel。
  3. 消费者: 定义消息队列queue,并设置相关属性。
  4. 消费者: 定义特定类型的交换机exchange,并设置相关属性。
  5. 消费者: 设定绑定规则 (包括交换机名称、队列名称以及路由键routing key)。
  6. 消费者: 等待消息。
  7. 生产者: 创建消息。
  8. 生产者: 将消息投递给信息通道 (注明接收交换机名称和路由键)。
  9. 交换机: 获取消息,依据交换机类型决定是否匹配路由规则 (如需匹配,则对比消息路由键和绑定路由键)。
  10. 消费者: 获取并处理消息,发送确认信息。
  11. 结束: 关闭通道和连接。

相关文章

网友评论

      本文标题:RabbitMQ base 01

      本文链接:https://www.haomeiwen.com/subject/pscvsqtx.html