程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(1)

第3篇、rabbitmq 发送消息源码(简析)

发布于2021-06-08 13:00     阅读(822)     评论(0)     点赞(0)     收藏(1)


这篇主要研究一下rabbitmq的发送消息客户源码分析,先给出大概图

image-20210603193511613

  • 由上面图可以看出 ConnectionFactory–> Connection–> Channel–> push message, 将一步一步分析。

1、创建工厂类

  • 构造函数没有入参,且里面配置很多默认参数,具体一些重要参数

  • fielddefault(默认)含义
    virtualHost/虚拟主机概念(隔离消息能力)
    hostlocalhost主机地址
    port-1端口号(默认端口号为5672)
    requestedChannelMax2047最大通道数,2047 因为它是服务器端的 2048 减去通道 0,每个连接用于协商和错误通信
    requestedFrameMax0默认是0,表示请求帧大小没有任何限制
    requestedHeartbeat60默认心跳检测间隔是60s
    connectionTimeout60000默认连接超时是60s
    handshakeTimeout10000默认握手超时是10s
    shutdownTimeout10000默认关闭超时是10s,如果是0则无限等待
    threadFactoryExecutors.DefautThreadFactoryjdk自带线程工厂类

    创建工厂类主要初始化相关配置信息, 后面可以会单独研究这个ConnectionFactory类

2、设置一些参数

  • 主要设置了host,其实如果host是localhost可以不用设置,因为上面定义默认值就是localhost
  • 设置了virtualHost 我们自定义vHost=test_host

3、创建Connection对象

  • 其实可以认为ConnectionFactory收集所有需要配置信息(原材料)开始创建Connection对象(生产)

  • image-20210603211749884

  • 可以看到主要四个步骤

    • 处理地址
    • 监控客户端消息收集器
    • 创建处理frame工厂类
    • 创建连接对象(上面是可恢复连接对象)

4、创建通道

  • 创建通道比较复杂,对不起我的饼贪大了(还是找个时间把这些东西先细分一下)
  • image-20210603213604239

5、发送消息

  • 核心方法 transmit方法
  • image-20210603214649751

6、总结

  1. 总体来说有点水了,后续需要补一下细节
  2. 累了睡觉了

原文链接:https://blog.csdn.net/m0_37355951/article/details/117535716



所属网站分类: 技术文章 > 博客

作者:小泽圈儿郎

链接:http://www.javaheidong.com/blog/article/219611/03165327d38c52f4bfdb/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

0 0
收藏该文
已收藏

评论内容:(最多支持255个字符)