zoukankan      html  css  js  c++  java
  • RabbitMQ核心概念和AMQP协议(二)

    RabbitMQ是什么?

      RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议,在完全不同的应用之间共享数据,RabbirMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。

    为什么使用RabbitMQ?

      开源、性能优秀、稳定性保障

      提供可靠的消息投递模式(comfirm)、返回模式(return)

      与SpringAMQP完美整合,API丰富

      集群模式丰富、表达式配置、HA模式(高可用模式)、镜像队列模式

      保证数据不丢失的前提下做到高可靠性,可用性

      解耦

    Rabbit高性能的原因?

      RabbitMQ使用Erlang语言,Erlang语言最初在于交换机领域的架构模式,这样使得RabbirMQ在Broker之间进行数据交互的性能非常挺优秀。

      Erlang优点:Erlang有着和原生Socket一样的延迟。(延迟和响应一样重要)

    什么是AMQP高级消息队列协议?

      AMQP全称:Advanced Message Queuing Protocol

      AMQP翻译:高级消息队列协议

      AMQP定义:是具有现代特征的二进制协议,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。

      AMQP协议模型:生产者应用服务端-------》将消息扔到server端(rabbitmq的节点)上,Virtual host虚拟主机,其实就是一个上层路由逻辑的概念,Exchange也就是更上一级的AMQP协议的核心。

              生产者将消息投递到Server的Exchange交换机上。(消息投递要经过服务连接用户名,密码,ip地址,在经过虚拟主机Virtual host,最后投递到具体的Exchange)。

              消费者应用服务端-------》监听Message Queue(消息队列)。

              Exchange和Message Queue又有一个绑定关系。

                                       

    AMQP核心概念是什么?

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

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

      Channel:网络通信,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,

           (消息流转,清空消息,添加用户等)

           客户端可建立多个Channel,每个Channel代表一个会话任务(拿到连接,创建channel)

      Message:消息,服务器和应用程序之间传送的数据,由Properties和Body组成。

           Properties可以对消息进行修饰,比如消息的优先级、延迟投递等高级特性,Body则是消息体内容

      Virtual host:虚拟主机,用于进行逻辑隔离,最上层的消息路由。

            一个Virtual Host里面可以有若干个Exchange和Queue,

            同一个Virtual host里面不能有相同名称的Exchange或者Queue  

      Exchange:交换机,接收消息,根据路由键(routing key)转发消息到绑定的队列上

      Binding:绑定,Exchange和Queue之间的虚拟连接,binding中可以包含routing key

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

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

    RabbitMQ的整体架构是什么?

      左P:生产者

      右P:消费者

      中间:Server端

      绿X:交换机

      红:队列

      

      生产者将消息投递到交换机上,一个交换机可以绑定多个消息队列,交换机有一个路由策略,(指定两个属性,1、消息发送哪个exchange,

      2、消息带上路由key,exchange和队列绑定关系,通过路由key将消息路由到指定队列上,发送给消费者。)

      

        

      

  • 相关阅读:
    php将字符串形式的数组转化为真数组
    Mysql8.0及以上 only_full_group_by以及其他关于sql_mode原因报错详细解决方案
    php使用base64_encode和base64_decode对数据进行编码和解码
    大数据基本概念
    sonarqube安装部署
    git-修改commit信息
    NLP-Commen Sense
    索引生命周期的管理
    kibana软件具体参数配置信息
    es机器监控x-pack导致的监控存储过大的问题
  • 原文地址:https://www.cnblogs.com/luhan777/p/11155571.html
Copyright © 2011-2022 走看看