AMQP协议介绍

AMQP概念

是一个协议

  • 高级消息队列协议 Advanced Message Queue Protocol)
  • 是应用层协议的一个开放标准
  • 为面向消息的中间件设计的
  • 同时还是Wire级的协议,它描述了在网络上传输的数据的格式,以字节为流。因此任何遵守此数据格式的数据,器创建和解释的消息,都能与其它兼容工具进行互操作【?尝试总结一下JMS与AMQP的区别】【?尝试了解一下啥是Wire级的协议】

重要的概念(4个)

  • 虚拟主机(virtual host)
    一个虚拟主机额持有一组交换机、队列、绑定。
    虚拟主机存在的必要性:RabbitMq当中,用户只能在虚拟主机额的力度进行权限控制。因此,如果需要禁止A组方位B组的交换机/队列/绑定,必须为A和B分别创建一个虚拟主机。 【?虚拟主机这个元素怎么看着是RabbitMq的概念,查阅其它资料仔细核对AMQP】
    每个RabbitMq服务器都有默认的虚拟主机“/”。【?“/”这个是虚拟主机的代名词吗?】
  • 交换机(exchange)
    用来转发Producer生产的消息。它不做存贮,因此呢,如果没有Queue bind到Exchange上的话,他会直接丢弃掉Producer发来的消息。
  • 队列(queue)
  • 绑定(binding)

其它概念

  • RoutingKey
    简单的解释为:Exchange和Queue的路线。

在这里有个概念,Exchange和Queue都要通过channel来定义,而RoutingKey则只需要在binding时取个名字就行了。【?需要细致的去整理channel、binding这个的深入知识】

消息发送、消费过程总结

  • 发送过程【?从生产者-tcp/信道建立-信道建立 的整个流转的准确表示】
  • 消费者消费过程

Consumer消费消息之前,需要创建一个Queue,并把这个Queue bind 到指定的Exchange上,然后Exchange回报消息转发到Queue上,Queue会负责存储消息,Consumer可以通过主动Pop或者是Subscribe之后被动毁掉的方式从Queue钟取得消息。【?主动Pop或者是Subscribe的概念不明确】

配图
AMQP协议介绍

蓝色-clients【生产者、消费者】
绿色-Exchange
红色-Queue

  • 交换机(Exchange),他是发送消息的实体。【?Exchange是发送消息的实体这个说法,有点突兀,有没有更加圆滑的解释】
  • 队列(Queue),这是接收消息的实体。【?Exchange是接收消息的实体,这个说法是相对于Bind来说的吧】
  • 绑定器(Bind),将交换机和对接连接起来,并封装消息的路由信息。【?它是将Exchange和Queue两个给串联起来了,那它做的是什么封装呢】

图解和分析 producer的send message、RabbitMq Server 路由消息、消费者的Receive Message

AMQP协议介绍

  1. 获取Conection
  2. 获取Channel
  3. 定义Exchange,Queue
  4. 使用一个RoutingKey,蒋Queue Binding到一个Exchange上
  5. 通过指定一个Exchange和一个RoutingKey来将消息发送到对应的Queue上
  6. 接收方接收时,也是获取connectiong,丽娜姐获取channel,然后指定Queue直接到它关系的Queue上取消息,他对Exchange,RoutingKey以及bingding都不关心,到对应的Queue上去取消息就OK了

对于整个过程会有一些疑问持续了解
【?producer在第一次连接时会做啥,或者说producer从建立连接到发送一个条有效的消息到Queue中,对E、Q、R分别做了有几个阶段,以及各个阶段内做了些什么事】
【?按照设计Exchange 与 Queue之间,可以被多条RoutingKey关联,请问这个在实际场景中是否有存在】

参考

AMQP实现原理

AMQP协议介绍

上一篇:【reverse】逆向1 数据宽度


下一篇:Building deep retrieval models