 消息中间件RocketMQ原理解析 - 斩秋CHECK_TRANSACTION_STATE,producer 的 DefaultMQProducerImpl. checkTransactionState()方法来处理 broker 定时回调的请求, 这里构 建 一 个 Runnable 任 务 异 步 执 行 producer 注 册 的 回 调 接 口 , 处 理 回 调 , 在 调 endTransactionOneway 向 broker 发送请求更新事物消息的最终状态 是消息在此文件的中初始偏移量,排好序后组成了一个连续的消息队 当消息到达 broker 时,需要获取最新的 MapedFile 写入数据,调用 MapedFileQueue 的 getLastMapedFile 获取,此函数如果集合中一个也没有创建一个,如果最后一个写满了也创 建一个新的。 MapedFileQueue 在获取 getLastMapedFile 时,如果需要创建新的 MapedFile 会计算出下0 码力 | 57 页 | 2.39 MB | 1 年前3 消息中间件RocketMQ原理解析 - 斩秋CHECK_TRANSACTION_STATE,producer 的 DefaultMQProducerImpl. checkTransactionState()方法来处理 broker 定时回调的请求, 这里构 建 一 个 Runnable 任 务 异 步 执 行 producer 注 册 的 回 调 接 口 , 处 理 回 调 , 在 调 endTransactionOneway 向 broker 发送请求更新事物消息的最终状态 是消息在此文件的中初始偏移量,排好序后组成了一个连续的消息队 当消息到达 broker 时,需要获取最新的 MapedFile 写入数据,调用 MapedFileQueue 的 getLastMapedFile 获取,此函数如果集合中一个也没有创建一个,如果最后一个写满了也创 建一个新的。 MapedFileQueue 在获取 getLastMapedFile 时,如果需要创建新的 MapedFile 会计算出下0 码力 | 57 页 | 2.39 MB | 1 年前3
 Apache RocketMQ 从入门到实战架构的核心基础设施。 丁威老师作为资深架构师,在分布式架构、存储方面功底深厚,目前在企业内部负责着 日均千亿级消息流转的 RocketMQ 集群。本书不仅由浅入深的介绍了 RocketMQ 的架 构与实现,而且包含了多年线上超大规模集群开发运维经验的总结,通过本书不仅能够掌握 分布式消息平台的设计原理,对线上疑难问题排查分析、性能调优与架构设计也大有帮助。 目录 开篇:我的另一种参与 RocketMQ 何商业行为。 1.7 一次 RocketMQ 进程自动退出排查经验分享 < 80 发现 broker 日志中有打印出 shutdownHook,表示在进程退出之前执行了启动时 注册时的退出钩子函数,说明是 broker 是正常停止的,并且也不可能是 kill -9 命令, 肯定是显示的执行了 kill 命令,于是立马使用 history 命令 查看历史命令,都未在指定时 间执行过该命令,并且切换到 抛出 MQBrokerException 该方法会 如何处理。 其关键代码如下图所示: 可以看出在 sendKernelImpl 方法中首先会捕捉异常,先执行注册的钩子函数,即就 算执行失败,对应的消息发送后置钩子函数也会执行,然后再原封不动的将该异常向上抛出。 sendKernelImpl 方法被 DefaultMQProducerImpl 的 sendDefaultImpl 方法调0 码力 | 165 页 | 12.53 MB | 1 年前3 Apache RocketMQ 从入门到实战架构的核心基础设施。 丁威老师作为资深架构师,在分布式架构、存储方面功底深厚,目前在企业内部负责着 日均千亿级消息流转的 RocketMQ 集群。本书不仅由浅入深的介绍了 RocketMQ 的架 构与实现,而且包含了多年线上超大规模集群开发运维经验的总结,通过本书不仅能够掌握 分布式消息平台的设计原理,对线上疑难问题排查分析、性能调优与架构设计也大有帮助。 目录 开篇:我的另一种参与 RocketMQ 何商业行为。 1.7 一次 RocketMQ 进程自动退出排查经验分享 < 80 发现 broker 日志中有打印出 shutdownHook,表示在进程退出之前执行了启动时 注册时的退出钩子函数,说明是 broker 是正常停止的,并且也不可能是 kill -9 命令, 肯定是显示的执行了 kill 命令,于是立马使用 history 命令 查看历史命令,都未在指定时 间执行过该命令,并且切换到 抛出 MQBrokerException 该方法会 如何处理。 其关键代码如下图所示: 可以看出在 sendKernelImpl 方法中首先会捕捉异常,先执行注册的钩子函数,即就 算执行失败,对应的消息发送后置钩子函数也会执行,然后再原封不动的将该异常向上抛出。 sendKernelImpl 方法被 DefaultMQProducerImpl 的 sendDefaultImpl 方法调0 码力 | 165 页 | 12.53 MB | 1 年前3
 RocketMQ v3.2.4 开发指南com/alibaba/RocketMQ 21 索引项)。 3. 遍历索引项列表迒回查询时间范围内的结果集(默讣一次最大迒回的 32 条记彔) 4. Hash 冲突;寻找 key 的 slot 位置时相当亍执行了两次散列函数,一次 key 的 hash,一次 key 的 hash 值叏模, 因此返里存在两次冲突的情冴;第一种,key 的 hash 值丌同但模数相同,此时查询的时候会在比较一次 key 的 hash 值(每个索引项保存了0 码力 | 52 页 | 1.61 MB | 1 年前3 RocketMQ v3.2.4 开发指南com/alibaba/RocketMQ 21 索引项)。 3. 遍历索引项列表迒回查询时间范围内的结果集(默讣一次最大迒回的 32 条记彔) 4. Hash 冲突;寻找 key 的 slot 位置时相当亍执行了两次散列函数,一次 key 的 hash,一次 key 的 hash 值叏模, 因此返里存在两次冲突的情冴;第一种,key 的 hash 值丌同但模数相同,此时查询的时候会在比较一次 key 的 hash 值(每个索引项保存了0 码力 | 52 页 | 1.61 MB | 1 年前3
共 3 条
- 1













