初始RabbitMQ

目录

概述

基本简要

优势

AMQP协议简述

RabbitMQ架构

工作模型

简单模式

工作队列模型

Pub/Sub订阅模式

Routing路由模式

Topics通配符模式

总结


概述

基本简要

MQ(Message Queue)消息队列,是在消息的传输过程中保存信息的容器,多用于分布式系统之间进行通信

优势

应用解耦

系统的耦合性越高,容错性就越低,可维护性就越低

异步提速

削峰填谷

AMQP协议简述

AMQP(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计

模型组成:

  1. exchange(交换机):从publisher程序中收取消息,并把消息根据一些规则路由到消息队列(Message Queue)中
  2. queue(消息队列):存储消息,直到消息被安全的投递给了消费者Consumer
  3. binding:定义了queue和exchange之间的关系,提供了消息路由(Routes)的规则

简要说明:

  1. 一个AMQP消息类似于一封邮件消息
  2. 消息队列类似于一个邮箱
  3. 消费者类似一个邮件客户端,能够拉取和删除邮件
  4. 交换机类似于一个邮件服务器。检查邮件,基于邮件的路由信息,路由表,来决定如何把邮件发送到一个或多个邮箱里
  5. Routing key类似于邮件中的地址
  6. binding通过Routing key告诉你如何走下一步

概述:生产者生产一封邮件消息,交换机检查邮件的路由信息,binding拿到路由信息进行放入到指定的收件箱(queue)消费者取出并消费

RabbitMQ架构

rabbitmq基于AMQP协议

模型组成:

  1. Broker:接收和发小消息的应用
  2. Virtual host:当多个不同的用户使用一个RabbitMQ server提供的服务时,可以划分多个vhost,每个用户在自己的vhost创建exchange/queue
  3. Connection:publisher/consumer和broker之间的tcp连接
  4. channel:是connection内部建立的逻辑连接,为了减少操作系统建立TCP connection的开销
  5. Exchange:消息到达broker的第一站,根绝分发规则,匹配查询表中的routing key,分发消息到队列中去
  6. Queue:消息最终被送到这里等待consumer取走
  7. binding:exchange和queue之间的虚拟连接,binding中可以包含routing key,binding信息被保存到exchange中的查询表,用于message的分发依据

工作模型

简单模式

  1. P:生产者,也就是发送消息的程序
  2. 消费者:消息的接收者,会一直等待消息到来
  3. queue:消息队列,图中红色部分,类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消息

工作队列模型

  1. Work Queues:多个或一个消费端,多个消费端共同消费同一个队列的消息
  2. 在同一个队列中如果有多个消费者,那么消费者之间同一个消息的关系是竞争的关系
  3. Work Queues对于任务过重或任务较多情况使用工作队列可以提高处理的速度

Pub/Sub订阅模式

  1. P:生产者,也就是发送消息的程序,但是不再发送到队列中,而是发给X(交换机)
  2. C:消费者,消息的接收者,会一直等待消息到来
  3. Queue:消息队列,接收消息,缓存消息
  4. Exchange:交换机(X),一方面,接收生产者发送的消息,另一方面,直到如何处理消息,例如递交给某个特别队列、递交给所有队列,或是将消息丢弃。Exchange的三种类型
    1. Fanout:广播,将消息交给所有绑定到交换集的队列
    2. Direct:定向,把消息交给符合指定routing key的队列
    3. Topic:通配符,把消息交给routing pattern(路由模式)的队列

Exchange(交换机)只负责转发消息,不具备存储消息的能力,因此如果没有任何队列与Exchange绑定,或者没有符合路由规则的队列,那么消息会丢失

Routing路由模式

模式说明:

  1. 队列与交换机的绑定,不能是任意绑定了,而是要指定一个RoutingKey
  2. 消息的发送方向在向Exchange发送消息时,也必须指定消息的RoutingKey
  3. Exchange不再是把消息交给每一个绑定的队列,而是根据RoutingKey进行判断,只有队列的RoutingKey与消息的RoutingKey与消息的Routingkey完全一致,才会接收到消息

对象说明:

  1. P:生产者,向Exchange发送消息,发送消息时,会指定一个routingKey
  2. X:Exchange(交换机):接收生产者的信息,然后会把消息递交给routingKey完全匹配的队列
  3. C1:消费者,其所在队列指定了需要routingKey为error的信息
  4. C2:消费者,其所在队列指定了需要routingKey为info,error,warning的消息

Topics通配符模式

模式说明:

  1. topic主题模式可以实现Pub/Sub发布于订阅模式和Routing路由模式的功能,只是在配置Routingkey的时候可以使用通配符,显得更加灵活

总结

  1. 简单模式:一个生产者,一个消费者,不需要设置交换机
  2. 工作队列模式Work Queue:一个生产者、多个消费者(竞争关系)、不需要设置交换机
  3. 发布订阅模式Publish/subscribe:需要设置类型为fanout的交换机,并且交换机和队列进行绑定,当发送消息到交换机后,交换机会将消息发送到绑定队列
  4. 路由模式Routing:需要设置类型为direct的交换机,交换机和队列进行绑定,并且指定routing key,当消息到交换机后,交换机会根绝routing key将消息发送到对应的队列
  5. 通配符模式Topic:需要设置类型为topic的交换机,交换机和队列进行绑定,并且指定通配符方式和routing key,当发送消息到交换机后,交换机会根据 routing key将消息发送到对应的队列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值