2024年2月15日

摘要: rocketMQ是netty,用requestId,一个channel。 redisson也是netty,24个channel,模拟socket阻塞式请求,因为redis是单线程?,可以保证请求和响应对应。 tomcat类似netty的多路复用,那么请求和响应的对应只能由客户端的阻塞式socket来 阅读全文
posted @ 2024-02-15 21:43 chuliang 阅读(4) 评论(0) 推荐(0) 编辑
 

2022年9月18日

摘要: 客户端(包含生产者和消费者)定时任务里updateTopicRouteInfoFromNameServer方法,定时向nameService获取topic(当前客户端所包含的所有消费者者消费的和生产者要发送的)的信息 对于一个topic来说,可能会在多个broker上有队列,所以broker信息会是 阅读全文
posted @ 2022-09-18 21:43 chuliang 阅读(125) 评论(0) 推荐(0) 编辑
 

2022年4月7日

摘要: orderly:1、SUSPEND_CURRENT_QUEUE_A_MOMENT:在本地重试,先判断重新消费次数有没有达到最大值(consumer定义的时候传入,不传为Integer最大值),如果没达到,重试次数+1,放入消费池,1秒(默认)之后再消费,直到达到最大消费次数。发送到重试队列(这个时候 阅读全文
posted @ 2022-04-07 01:25 chuliang 阅读(1105) 评论(0) 推荐(0) 编辑
 

2021年10月10日

摘要: broker定时向namesrv 注册,会告诉namesrv自己的brokername、brokeraddress、topic+队列数量信息等,namesrv会把topic的信息放到topicQueueTable(只有版本号改变才修改, broker只有topic信息发生改变了才改变版本号)中,同一 阅读全文
posted @ 2021-10-10 22:08 chuliang 阅读(65) 评论(0) 推荐(0) 编辑
 

2021年8月22日

摘要: indexFile(索引文件)和 ConsumeQueue(消费队列),都是为了更快的查找而建立的索引,后者是根据topic,前者是根据key。在ReputMessageService(一个ServiceThread的实现类)的doReput方法中, 会循环遍历每一条新收到的消息, DefaultM 阅读全文
posted @ 2021-08-22 18:59 chuliang 阅读(184) 评论(0) 推荐(0) 编辑
 

2021年6月14日

摘要: 权限控制初步: 官网是这样启动broker: nohup sh bin/mqbroker -n localhost:9876 & 在阿里云部署的时候,namesrv给producer的是局域网地址,所以要在启动的时候绑定外网ip,broker启动时候源码中是从 -c 参数指定的文件(broker.c 阅读全文
posted @ 2021-06-14 22:26 chuliang 阅读(187) 评论(0) 推荐(0) 编辑
 

2021年5月29日

摘要: 在RequestMappingHandlerAdapter.afterPropertiesSet >getDefaultArgumentResolvers方法中,先往argumentResolvers属性中添加默认的一批去处理有注解的参数,再添加一批处理特定对象类型的参数,此时还剩下的就是其他对象类 阅读全文
posted @ 2021-05-29 11:06 chuliang 阅读(265) 评论(0) 推荐(0) 编辑
 

2020年11月15日

摘要: vm.init,先为computed变量(假设是age,并在computed方法中依赖于另一个变量vm.factor)初始化,age会关联一个watcher(假设为cWatcher,lazy为true),vm.age的get方法被重写,cWatcher的dirty属性被置为true。其getter属 阅读全文
posted @ 2020-11-15 16:36 chuliang 阅读(1597) 评论(0) 推荐(0) 编辑
 

2020年11月2日

摘要: 全局组件通过Vue.component注册,而Vue.component的定义是在initGlobalAPI(Vue); >initAssetRegisters(Vue)。ASSET_TYPES数组中有'component'字符串。Vue.component(id, definition)方法的逻辑 阅读全文
posted @ 2020-11-02 00:24 chuliang 阅读(237) 评论(0) 推荐(0) 编辑
 

2020年8月26日

摘要: redisson用的是netty的io框架,逻辑在channel的handler中 先看配置,以常用的哨兵模式为例,config.useSentinelServers()+Redisson.create(config)。Redisson的构造方法中,最重要的是给connectionManager属性 阅读全文
posted @ 2020-08-26 18:21 chuliang 阅读(1350) 评论(0) 推荐(0) 编辑