Apache RocketMQ 从入门到实战开篇:我的另一种参与 RocketMQ 开源社区的方式 接下来我们回到本节的主题,那如何参与一个开源项目呢? 在参与一个开源项目之前,我觉得第一个最基本的步骤还是要打牢基础,这里的基础至 少要包括 JAVA 集合、JAVA 并发(JUC)这两项,只是最最基本的,至少要阅读其源码, 理解其设计理念,至于 NIO,Netty 这些可以后续在需要使用时再去专门学习,有针对性 的学习,有使用需求,或许学习动力更强劲,学习效率更高效。 raft 协议保证 broker 节点数据的强一致性,该部署 架构在金融行业用的比较多。 二、消息订阅模型 在 RocketMQ 的消息消费模式采用的是发布与订阅模式。 topic:一类消息的集合,消息发送者将一类消息发送到一个主题中,例如订单模块将 订单发送到 order_topic 中,而用户登录时,将登录事件发送到 user_login_topic 中。 consumegroup: PR,将这个问题修复,建议 大家在公司尽量对自己使用的版本进行修改,重新打一个包即可,因为这已经违背了 Broker 端快速失败的设计初衷。 但在消息发送的业务方,尽量自己实现消息的重试机制,即不依懒 RocketMQ 本身 提供的重试机制,因为受制与网络等因素,消息发送不可能百分之百成功,建议大家在消息 发送时捕获一下异常,如果发送失败,可以将消息存入数据库,再结合定时任务对消息进行 重试,尽最大程度保证消息不丢失。0 码力 | 165 页 | 12.53 MB | 1 年前3
消息中间件RocketMQ原理解析 - 斩秋broker 即 brokerAddrTable 中的值是怎么获得的, 1. 发送消息的时候指定会指定 topic,如果 producer 集合中没有会根据指定 topic 到 namesrv 获取 topic 发布信息 TopicPublishInfo,并放入本地集合 2. 定时从 namesrv 更新 topic 路由信息, Producer 与 broker 间的心跳 Producer Producer 定时发送心跳将 producer 信息(其实就是 procduer 的 group)定时发送到, brokerAddrTable 集合中列出的 broker 上去 Producer 发送消息只发送到 master 的 broker 机器,在通过 broker 的主从复制机制拷贝到 broker 的 slave 上去 二:Producer 如何发送消息 //自增整型 方法 selectOneMessageQueue 方法用来选择一个发送队列 (++sendWitchQueue) % messageQueueList.size 为队列集合的下标 每次获取 queue 都会通过 sendWhichQueue 加一来实现对所有 queue 的轮询 如果入参 lastBrokerName 不为空,代表上次选择的 queue0 码力 | 57 页 | 2.39 MB | 1 年前3
RocketMQ v3.2.4 开发指南的拉消息方法从 Broker 拉消息,主劢权由应用控制。 Producer Group 一类 Producer 的集合名称,返类 Producer 通常収送一类消息,丏収送逡辑一致。 Consumer Group 一类 Consumer 的集合名称,返类 Consumer 通常消费一类消息,丏消费逡辑一致。 Broker 消息中转角色,负责存储消息,转収消息,一般也称为 Producer 吐一些队列轮流収送消息,队列集合称为 Topic,Consumer 如果做广播消费,则一个 consumer 实例消费返个 Topic 对应的所有队列,如果做集群消费,则多个 Consumer 实例平均消费返个 topic 对应的 项目开源主页:https://github.com/alibaba/RocketMQ 11 队列集合。 能够保证严格的消息顺序 2、广播消费 messageQueueListener 监听队列变化 offsetStore 消费进度存储 registerTopics [] 注册的 topic 集合 allocateMessageQueueStrategy AllocateMessageQueueAveragely Rebalance 算法实现策略 项目开源主页:https://github0 码力 | 52 页 | 1.61 MB | 1 年前3
共 3 条
- 1













