RabbitMQ消息队列模型

         之前一直有了解rebbitmq,项目里也没用到,今天专门学习了一下,不得不说,消息队列中间件也是有其优势的 。

         1) 同步变异步,当然可以使用线程池解决,但是缺点很明显:要自己实现线程池,并且强耦合,大多数是使用消息队列来解决。

        2)流量削峰---秒杀系统

        3)rabbitmq采用信道通信。不采用tcp直接通信

        RabbitMQ提供了四种Exchange:fanout,direct,topic,header

        RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储

        AMQP协议模型

       RabbitMq的整体架构

        AMQP核心概念

    Server: 又称Broker,接受客户端的连接,实现AMQP实体服务;

    Connection: 连接,应用程序与Broker的网络连接;

    Channel: 网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道。客户端可建立多个Channel,每个Channel代表一个会话任务。

    Message: 消息,服务器和应用程序之间传送的数据,由Properties和Body组成。Properties可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body则就是消息体内容。

    Virtual Host: 虚拟地址,用于进行逻辑隔离,最上层的消息路由。一个Virtual Host里面可以有若干个Exchange或Queue,同一个Virtual Host里面不能有相同名称的Exchange或Queue。

    Exchange: 交换机,接收消息,根据路由键转发消息到绑定的队列。

    Binding: Exchange和Queue之间的虚拟连接,Binding中可以包含Routing Key。

    Routing Key: 一个路由规则,虚拟机可用它来确定如何路由一个特定消息。

    Queue: 也称为Message Queue,消息队列,保存消息并将它们转发给消费者。

        RabbitMQ消息是如何流转的?

            保障100%消息投递成功设计方案

Step1: 业务数据入库 BIZ DB
Step1: 存储消息记录,入库 MSG DB,消息记录表

消息状态:
    0: 消息发送中    1: 消息发送成功    2: 消息发送失败

 

        参考链接:

        rabbitmq 的几种队列模型

        rabbitmq的三种Exchange模式

        RabbitMQ 为什么需要信道?为什么不是TCP直接通信?

        深入理解AMQP协议

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值