- 博客(12)
- 资源 (6)
- 收藏
- 关注
原创 rocketmq3.26研究之四DefaultMQProducer
DefaultMQProducer 作为rocketmq生产者的默认实现,其实它并没有做任何实现,其内部引用一个DefaultMQProducerImpl实例进行具体消息发送。 它有一些基础配置,比如多长时间内消息发送多少次还是没成功则放弃(默认为4秒内发送3次,每次发消息默认超时间为3秒),可以参考DefaultMQProducerImpl.sendDefaultImpl
2016-02-18 18:38:59 11925 4
原创 rocketmq3.26研究之三NameServer
1. NamesrvStartup>该类主要用于读取配置文件,初始化并启动NamesrvController。2. NamesrvController>该类两个重要功能:>1 接受broker的注册,并返回master地址和ha地址,这样slave注册时就能知道master以及数据同步地址。
2016-02-15 17:26:34 2360
原创 rocketmq3.26研究之一存储层
MapedFile 对MappedByteBuffer的封装,具有创建文件(使用非堆区内存), 写入,提交,读取,释放,关闭等功能 关键字段解释: 1 fileFromOffset 单看这个字段很难明白什么意思,如果联系上MapedFileQueue来看的话,就能明白了,该字段代表了这个文件在queue中的偏移量,比如0,表示queue中的第一个文件,1024表示queue
2016-02-15 11:26:07 5764
原创 rocketmq3.26研究之六DefaultMQPushConsumer消费流程
1 假设关系图如下:图12 启动流程如下:3 一切美好的事情都从PullMessageService的run方法开始了: 3.1 run方法会不断的从LinkedBlockingQueue中获取PullRequest对象,然后根据PullRequest进行消息拉取。 问题1:是谁把PullRequest放到LinkedBlockingQu
2016-02-14 17:46:30 6667
原创 rocketmq问题汇总-broker配置brokerIp2何时该配置?
HA说brokerIp2之前需要先说一下rocketmq的高可用功能,rocketmq的broker负责存储消息,提供读写功能,一旦挂掉将无法提供服务。为了保证高可用,每个broker可以部署为一个master对应一个或多个slave功能,当master挂掉时,consumer从slave拉取数据进行读取。HA地址HAServerAddress说明:slave从master拉取
2016-02-14 17:38:11 6905 1
原创 rocketmq3.26研究之Failover下consumer的表现
1 环境如下:2 消费流程参照DefaultMQPushConsumer消费流程3 failover表现:3.1 消息拉取异常:2015-08-12 11:47:13,215 [PullMessageService] ERROR RocketmqClient - pullKernelImpl exceptioncom.alibaba.rocket
2016-02-14 17:37:03 3957
原创 rocketmq3.26研究之Failover下producer的表现
1 环境如下:说明:producer默认会依次轮询 broker_a-q0,broker_a-q1,broker_a-q2,broker_a-q3,broker_b-q0,broker_b--q1,broker_b-q2,broker_b-q3 进行消息发送。这个对应关系列表暂时称作 topic路由,下面会用到该词语。2 消息发送流程:每次发送
2016-02-14 17:35:35 1392
原创 rocketmq问题汇总-一个consumerGroup只对应一个topic
1 同一个订阅组内不同Consumer实例订阅不同topic消费混乱问题调查图1:背景说明:如图1左半部分,假设目前的关系如下:broker: 两个,broker_a和broker_btopic:两个,topic1和topic2,每个topic在每个broker上分为4个queueconsumer:两个,consumer1和consumer2
2016-02-14 17:32:19 95662 26
原创 rocketmq问题汇总-instanceName参数何时该设置?
以下只针对集群模式:1 producer默认情况下不需要设置instanceName,rocketmq会使用ip@pid(pid代表jvm名字)作为唯一标示如果同一个jvm中,不同的producer需要往不同的rocketmq集群发送消息,需要设置不同的instanceName原因如下:如果不设置instanceName,那么会使用ip@pid作为producer唯一标识,
2016-02-14 17:31:14 18248 3
翻译 reactor
对于同步事件的多路复用和分发的面向对象的行为模式这篇文章早期的版本作为一章出现在“Pattern Languages of Program Design” ISBN 0-201-6073-4, 编辑 Jim Coplien and Douglas C. Schmidt由 Addison-Wesley出版, 1995.1 意图Reactor模式是用来处理由一个或多
2016-02-02 13:06:33 603
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人