• rabbitMQ之AMQP协议


    1.什么是AMQP协议

       即高级消息队列协议,规范客户端与消息中间件服务器之间的通信,并能相互操作。

    2.AMQP协议的作用

      降低应用程序之间的耦合度,这样不同应用之间的集成的难度将变得更小,并开发出更有用的应用程序 。

    3.AMQP协议的模型

      包含三个成员:Exchange,Message Queue,Binding

      Exchange:转换成员,是接收应用程序发过来的信息,但通过Binding这个路由规则,路由到对应的Message Queue中

      Message Queue:这个是存储实际队列的内容

      Binding:定义Exchange与Message Queue这间绑定的路由规则

    4.AMQP协议分了三层:

      Model Layer(模型层)
          规范服务器端Broker的行为。
      Session Layer(会话层)
          定义客户端与服务器端Broker的Context。
      Transport Layer(传输层)
          传输二进制数据流。

    5.AMQP的工作原理

    AMQP服务器Broker主要由Exchange和Message Queue组成,主要功能是Message的路由Routing和缓存Buffering。


    图2 AMPQ服务器模型图
     

        Exchange接受Producer发送的Message并根据不同路由算法将Message发送到Message Queue。
        Message Queue会在Message不能被正常消费时将其缓存起来,但是当Consumer与Message Queue之间的连接通畅时,Message Queue将Message转发给Consumer。
        Message由Header和Body组成,Header是由Producer添加的各种属性的集合,包括Message是否客被缓存、由哪个Message Queue接受、优先级是多少等。而Body是真正需要传输的APP数据。
        Exchange与Message Queue之间的关联通过Binding来实现。Exchange在与多个Message Queue发生Binding后会生成一张路由表,路由表中存储着Message Queue所需消息的限制条件即Binding Key。当Exchange收到Message时会解析其Header得到Routing Key,Exchange根据Routing Key与Exchange Type将Message路由到Message Queue,流程如下图:


    图3 Messag处理流程图

        Binding Key由Consumer在Binding Exchange与Message Queue时指定,而Routing Key由Producer发送Message时指定,两者的匹配方式由Exchange Type决定。
        Exchange Type分为Direct(单播)、Topic(组播)、Fanout(广播)。当为Direct(单播)时,Routing Key必须与Binding Key相等时才能匹配成功,当为Topic(组播)时,Routing Key与Binding Key符合一种模式关系即算匹配成功,当为Fanout(广播)时,不受限制。默认Exchange Type是Direct(单播)。
        Virtual Host是个虚拟概念,可以持有一些Exchange和Message Queue。一个Virtual Host可以是一台服务器,也可以是由多台服务器组成的集群。Exchange和Message Queue可以分别部署在一台或者多台服务器上。

  • 相关阅读:
    如何启动SOLR特性: 按层面检索
    solr的范围查询 TO
    jetty
    solr高亮的使用
    SQL日期加一天
    SQL从第二条开始取记录
    写出昨天的日期
    SQL取前后一条数据
    项目组【网站】的项目
    获取input文本框中高亮显示的值
  • 原文地址:https://www.cnblogs.com/myblog1314/p/4007131.html
Copyright © 2020-2023  润新知