rocketmq
文章平均质量分 63
rocketmq
小味
这个作者很懒,什么都没留下…
展开
-
24. rocketmq集群消费模式下,消费offset的管理
1. consumer启动时获取consumeOffset2. broker响应consumer的consumeOffset查询3. consumer消费过程中更新consumeOffset4. broker响应consume更新consumeOffset原创 2021-12-12 16:34:21 · 2738 阅读 · 1 评论 -
23. rocketmq顺序消费
之前的文章,都是基于并发消费讲解的,今天来分析一下顺序消费原创 2021-12-08 13:39:07 · 4670 阅读 · 0 评论 -
22. 消息过滤消费-tag过滤
目录1. consumer配置订阅消息2. consumer心跳将订阅信息发送到broker3. broker处理consumer的心跳4. 订阅配置发生变更,反向通知consumer5. consumer处理broker发来的订阅变更消息6. consumer发送pullRequest7. broker处理pullRequest8. consumer处理PullResult1. consumer配置订阅消息测试代码try { con原创 2021-12-07 14:04:10 · 2103 阅读 · 0 评论 -
21. rocketmq 事务消息
rocketmq的事务消息,在一些场合被用作分布式事务的解决方案,今天就来分析一下rocketmq的事务消息目录1. 事务消息流转流程1. 事务消息流转流程示例代码:public static void main(String[] args) throws MQClientException { logger.info("producer start ..."); TransactionMQProducer producer = new.原创 2021-12-04 20:37:49 · 1576 阅读 · 0 评论 -
20. rocketmq 延时消息
原创 2021-12-02 20:22:47 · 838 阅读 · 0 评论 -
19. consuemr消费失败后,消息如何处理?
如何处理?原创 2021-12-02 20:24:31 · 1487 阅读 · 0 评论 -
18. consumer与broker如何处理消费进度?
原创 2021-12-02 20:24:40 · 552 阅读 · 0 评论 -
17. consuemr如何处理拉取到的消息?
如何处理原创 2021-12-02 20:24:52 · 651 阅读 · 0 评论 -
16. broker如何为consumer准备数据?
前面分析了broker的消息存储,也分析了consumer消费流程,今天来深入探究一下broker是如何为consumer准备数据的原创 2021-12-01 19:58:57 · 152 阅读 · 0 评论 -
15. broker如何将消息信息写入comsumeQueue和indexFile文件?
前两篇文章中已经分析了rocketmq的存储结构和如下将消息写入到commitlog文件中,今天来分析如何将消息信息写入到consumeQueue和indexFile文件中消息写入到commitlog之后,后续的步骤由ReputMessageService来承接 public DefaultMessageStore(final MessageStoreConfig messageStoreConfig, final BrokerStatsManager brokerStatsManager原创 2021-12-01 19:51:15 · 248 阅读 · 0 评论 -
14. broker上的commitlog、consumeQueue和IndexFile文件
RocketMQ主要存储文件包括,commitLog、consumeQueue、indexFile,所有主题消息都顺序存储在一个文件中,以确保消息的顺序写;同时,RocketMQ又引入了consumeQueue,每个主题包含多个消费队列,每个消费对了对应一个文件,如下图: CommitLog:消息存储文件,所有消息主题的消息都存储在CommitLog文件中。 ConsumeQueue:按topic和queueid来区分,存储了commitlog offset/msgsize/tag.原创 2021-12-01 18:42:42 · 286 阅读 · 0 评论 -
13. broker如何将消息存储到日志文件
消息存储分析原创 2021-12-01 14:12:09 · 276 阅读 · 0 评论 -
12. producer 如何均衡的将消息发送到broker上及故障延迟机制
查看DefaultMQProducerImpl.sendDefaultImpl()方法,private SendResult sendDefaultImpl( Message msg, final CommunicationMode communicationMode, final SendCallback sendCallback, final long timeout ) throws MQClientException, R原创 2021-11-30 13:59:47 · 549 阅读 · 0 评论 -
11. topic的预创建
预创建topic,是现在broker上创建好topic的相关信息,并注册到nameSrv上,producer生产消息时,直接重nameSrv中拉取topic的路由信息即可预先创建topic,需要通过rocketmq的命令:./mqadminupdateTopic通过命令,我们直接定位到源码:UpdateTopicSubCommand public void execute(final CommandLine commandLine, final Options options.原创 2021-11-29 13:30:02 · 580 阅读 · 0 评论 -
10. topic的自动创建流程
rocketmq在发送消息时,会先去获取topic的路由信息,如果topic是第一次发送消息,由于nameserver没有topic的路由信息,所以会再次以“TBW102”这个默认topic获取路由信息,假设broker都开启了自动创建开关,那么此时会获取所有broker的路由信息,消息的发送会根据负载算法选择其中一台Broker发送消息,消息到达broker后,发现本地没有该topic,会在创建该topic的信息塞进本地缓存中,同时会将topic路由信息注册到nameserver中,那么这样就会造成一个后原创 2021-11-29 13:03:08 · 1085 阅读 · 0 评论 -
9. 回头来看看RocketMq的相关理论
1.NameSrv: 无状态的注册中心,相关组件(1)KVConfigManagekey-value配置管理(2)RouteInfoManager注册Broker信息(名称,角色编号,地址,集群名)注册topic,提供topic信息(Topic名称,读写权限,队列情况)2. Broker消息存储中心,通过namesrv向外提供服务3.Producer消息生产者,通过nameSrv获取broker信息并向broker发送生产的消息4.Consuemr消费者,通过原创 2021-11-28 15:07:53 · 63 阅读 · 0 评论 -
8. consumer向broker发送心跳
xx原创 2021-11-28 13:38:45 · 128 阅读 · 0 评论 -
7. broker响应consumer消费消息
在BrokerController.registerProcessor()中/** * PullMessageProcessor */this.remotingServer.registerProcessor(RequestCode.PULL_MESSAGE, this.pullMessageProcessor, this.pullMessageExecutor);this.pullMessageProcessor.registerConsumeMessageHook(consumeMess原创 2021-11-28 13:37:53 · 158 阅读 · 0 评论 -
6. consumer消费消息
测试代码public static void main(String[] args) { DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ProducerGroupName"); consumer.setNamesrvAddr("127.0.0.1:9876"); consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_原创 2021-11-28 13:37:07 · 732 阅读 · 0 评论 -
5. broker 接收producer生产的消息
上一篇文章中,本地调试,发送的消息类型是SEND_MESSAGE_V2原创 2021-11-27 20:45:14 · 509 阅读 · 0 评论 -
4. producer 生产消息
测试代码 public static void main(String[] args) throws MQClientException { logger.info("producer start ..."); DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName1"); producer.setNamesrvAddr("127.0.0.1:9876");//外网原创 2021-11-27 20:24:58 · 458 阅读 · 0 评论 -
3. nameSrv接收broker的注册
nameSrvController中的remotingServer在start()的时候,完成了netty server的初始化,并启动监听9876端口号,在初始化的时候,设置了childHandler.childHandler(new ChannelInitializer<SocketChannel>() { @Override public void initChannel(SocketChannel原创 2021-11-27 19:37:14 · 196 阅读 · 0 评论 -
2.broker 启动流程
测试代码 public static void main(String[] args) { System.setProperty(MixAll.ROCKETMQ_HOME_PROPERTY, System.getProperty("user.dir") + "/data/rocketmq/broker1"); System.setProperty(MixAll.NAMESRV_ADDR_PROPERTY, "127.0.0.1:9876"); Stri原创 2021-11-27 19:24:41 · 678 阅读 · 0 评论 -
1.namesrv启动流程
测试代码public static void main(String[] args) { System.setProperty(MixAll.ROCKETMQ_HOME_PROPERTY, System.getProperty("user.dir") + "/data/rocketmq/namesrv"); String [] myArgs = {"-c", System.getProperty("user.dir") + "/data/rocketmq/namesrv/conf/na原创 2021-11-27 18:55:27 · 153 阅读 · 0 评论