第21篇 rabbitmq前阶段回顾和复习(第9篇到第20篇)

这一节主要是对于这周学习的复习和总结,第14篇到第21篇,以及它们之间的联系串一下,也算整理一下学习东西,也是将零星学习东西类似拼图一样形成一个局部的小块

文章目录

    • 1、复习
    • 2、画个图描述一下
    • 3、总结

1、复习

  • 其实这会分析源码是自底向上,我们是以第9篇WorkPool(工作池,所有任务存储地方),WorkPool使用LinkedBlockingQueue(JDK的链表队列)感兴趣分析一下,分析完LinkedBlockingQueue,在往上看就是第12篇 ConsumerWorkService(创建具体任务和触发任务功能), 一个ConsumerWorkService可能同时服务多个channel,所以这个时候需要统一管理这些消息和消费的分发工作,这个时候就使用ConsumerDispatcher类完成这件事情
  • 继续往上分析源码,这里会有channel(通道的概念),消息都是经过channel接收和发送的,channel 有很多的方法,比如声明queue(队列) 、exchange(交换机)、事务,已经相关的监听器,channel是在connection上一个封装了
  • 其实到此为止我想要看一下ChannelN的源码,发现牵扯的东西比较多,特别是AMQChannel抽象类,所有我进一步细化分析具体类,Method抽象类,其实Method抽象类是所有AMQP的指令的抽象的模板,不同指令有不同Method的实现,它的最终的目标就是为了转换成Frame(传输的数据单位),然后将Method的具体实现请求头属性(这个时候我就分析BasicProperties)写到对应Frame的流中呢?rabbitmq定义一些规则和约定之类,定义最基础的DataOutputStream和DataInputStream的包装ValueWriter和ValueReader源码,了解最基础写map和array以及一些基本数据类型写流的规则。
  • 再往上的话具体封装ContentHeaderPropertyWriter和ContentHeaderPropertyReader(主要定义写入BasicProperties属性的规则,最让人印象深刻的是flagWord 判断某个字段是否存在,对应位置置为1)

2、画个图描述一下

  • 第21篇 rabbitmq前阶段回顾和复习(第9篇到第20篇)_第1张图片

  • 说明

    1. 表示AMQP接口就定义rabbitmq 的协议和实现,最终转换成可以传递的Frame流对象
    2. Channel接口定义一般抽象方法发布消息、tx,队列,交换器,监听器之类
    3. ConsumerDispatcher就是识别任务和分发任务工具
  • 灰色部分表示目前想要了解源码还没做的部分

3、总结

  1. 算是对前一阶段源码分析的总结和归纳,期间也学习不少好coding style
  2. 主要工作还是解决Consumer(也就消费者)这边一些逻辑源码,AMQP的协议Method的指令学习(具体指令没有深入了解)
  3. 希望您从中有所收获和感悟,欢迎评论

你可能感兴趣的:(rabbitmq,rabbitmq,复习,源码,总结)