消息发送5-总结|学习笔记

简介: 快速学习消息发送5-总结

开发者学堂课程【RocketMQ 知识精讲与项目实战(第三阶段)消息发送5-总结】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/704/detail/12475


消息发送5-总结


整个消息发送的主要方法,就是在DefaultMQProducerImpl 这个里面进行一个处理。

image.png最终会走到sendDefaultmpl(msg.sync.null.time.out)方法里。这里用了默认的时间是三秒钟,在发送信息的时候,先去校验消息的合法性。包括消息的程度等等,如果消息合法,它就开始发消息。

在发送过程中首先先去查找路由信息,通过TrytoFindTopicPublishinfo去发送,再去查找路由。

怎么查找路由?在客户端的本地缓存了一个topic publish路由的信息,它先从本地查,如果本地查出来了,那就直接使用本地的路由去发送。

如果本地没有路由怎么办?它就去通过MQclient instance去请求name server,通过name server查找当前topic所对应的路由信息,这一步是去查找路由。

路由查找出来之后,就要开始发送消息,最终消息是要发送到message queen这个消息队列当中。

发送的消息对列里rocket M Q做了一个故障延迟机制的处理,如果打开了故障延迟的机制,那么它在再去发送信息的时候先根据当前这个message queen,维护了一个索引,通过这个索引对message queen进行一个取模,取出message queen,取出来之后进行校验。

image.png如果它是可用的,那就直接返回,如果是不可用的,从它之前所发送过的故障表当中取出一个相对比较好的信息再去发送它。

如果这里面没有打开故障延迟机制,那就直接使用它。所以对这个message queen进行一个取模,直接返回。

第三步就是选择这个消息队列。选择了这个消息对列之后,接下来就要发送,在发送时,首先获取broker的网络地址,对message进行I D的设置,判断一下当前这个消息是否要去压缩,再去判断是否有发送之前的增强逻辑,如果有就把这个增强逻辑,其实就是一个钩子方法,将它进行执行。

整个都完成了之后,去封装请求包,通过MQclient的实力向外发送消息。

image.png整个消息的发送流程为以下四步:

1. 验证消息

2. 查找路由

3. 选择队列

4. 发送消息

5.

相关文章
|
Android开发
Android面试题之activity启动流程
该文探讨了Android应用启动和Activity管理服务(AMS)的工作原理。从Launcher启动应用开始,涉及Binder机制、AMS回调、进程创建、Application和Activity的生命周期。文中详细阐述了AMS处理流程,包括创建ClassLoader、加载APK、启动Activity的步骤,以及权限校验和启动模式判断。此外,还补充了activity启动流程中AMS的部分细节。欲了解更多内容,可关注公众号“AntDream”。
182 1
|
C#
如何在 C# 项目中链接一个文件夹下的所有文件
在 C# 项目中通过链接方式引入文件可以让我们在项目中使用这些文件中的代码。常见的比如链接 AssemblyInfo.cs 文件,这样我们就可以在项目中使用这个文件中的版本号等信息。但是如果我们想要链接一个文件夹下的所有文件,该怎么做呢?今天我们就来看看如何在 C# 项目中链接一个文件夹下的所有文件。
259 0
如何在 C# 项目中链接一个文件夹下的所有文件
|
存储 iOS开发
Swift学习第八枪--协议(二)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/51553393 协议(二) 下面是我的新建的Swift学习交流群,欢迎大家一起来共同学习Swift。
823 0
|
2天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
262 116
|
17天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
11天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
653 223