自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (3)
  • 收藏
  • 关注

原创 @RefreshScope及@Scope原理分析

截止执行LockedScopedProxyFactoryBean的setBeanFactory()里的后续代码,proxy.addAdvice(0, this),即上面添加的DelegatingIntroductionInterceptor被替换了,且将LockedScopedProxyFactoryBean自己作为拦截器。在beanFactory.getBean()的调用中,会根据bd的scope类型,利用scope的处理器获取相应的bean。接着就是反射调用target的xxmethod方法了。

2023-04-27 19:42:34 317

原创 dubbo SPI机制demo

dubbo 3 SPI机制

2022-11-30 16:02:48 297

原创 2. invokeBeanFactoryPostProcessors()

2021-12-26 16:22:22 169

原创 1. bean实例化简易流程

2021-12-26 16:20:18 213

原创 6. nacos 之spring-cloud结合

loadBalance体系,通过nacos的api获取服务列表,维持在本地里;然后通过serverlistUpater去定时更新一下服务实例列表,默认是30s。详细细节请参考:https://blog.csdn.net/ZXH240651200/article/details/122039688

2021-12-21 18:43:48 71

原创 1. spring-cloud 之 RestTemplate与@Loadbalanced

1. restTemplate是spring实现的,基于restful风格的http请求模板。使用restTemplate可以简化请求操作的复杂性,同时规范了代码风格。2. restTemplate不加@Loadbalanced注解,会根据url去请求,需要明确域名或者ip地址,如果写的是服务名称,例如:http://SERVICE_ORDER/list, 会报错:java.net.UnknownHostException3. restTemplate加了@Loadbalanced注解,就会通过lo

2021-12-21 14:25:15 2458 1

原创 5. nacos之服务心跳

(1)client发送心跳在2. nacos之服务注册_ZXH240651200的博客-CSDN博客里面分析过,如果服务注册类型是临时节点(默认就是临时的),会启动心跳任务。com.alibaba.nacos.client.naming.NacosNamingService#registerInstance(java.lang.String, java.lang.String, com.alibaba.nacos.api.naming.pojo.Instance) public vo..

2021-12-19 14:21:34 4665

原创 4. nacos之服务发现之udp通知

目录(1)client接收udp通知(2)naming处理ack(3)naming处理ack超时(1)client接收udp通知结合前面的文章,client在服务发现的时候,每次请求的时候会传递自己的clientIp+udpPort, 并且后续会定时去再次拉取服务实例信息。naming在发现服务实例有变化的时候,会通过clientIp+udpPort反向通知client,参考:2. nacos之服务注册_ZXH240651200的博客-CSDN博客 --> (3.3 服..

2021-12-19 13:17:21 3065

原创 3. nacos之服务发现

示例代码:public class MainConsumer { private static Logger logger = LoggerFactory.getLogger(MainConsumer.class); public static void main(String[] args) throws NacosException { Properties properties = new Properties(); properties.put(

2021-12-18 17:20:49 1139

原创 2. nacos之服务注册

目录(1) 创建NamingService(2) 服务注册(3)naming处理服务注册请求(3.1)构造service实例(3.2)保存instance到service实例中(3.3)服务变化时通过udp发送通知示例代码:public class MainProvider { public static void main(String[] args) throws NacosException { Properties properties =.

2021-12-18 16:08:44 1198

原创 1. nacos 1.4.2源码构建

1. 下载源码git地址:GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.克隆命令:git clone https://github.com.cnpmjs.org/alibaba/nacos.git这里切换到1.4.2分支之后。2.

2021-12-18 10:18:02 951

原创 24. rocketmq集群消费模式下,消费offset的管理

1. consumer启动时获取consumeOffset2. broker响应consumer的consumeOffset查询3. consumer消费过程中更新consumeOffset4. broker响应consume更新consumeOffset

2021-12-12 16:34:21 2665 1

原创 23. rocketmq顺序消费

之前的文章,都是基于并发消费讲解的,今天来分析一下顺序消费

2021-12-08 13:39:07 4556

原创 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 2057

原创 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 1548

原创 17. consuemr如何处理拉取到的消息?

如何处理

2021-12-02 20:24:52 628

原创 18. consumer与broker如何处理消费进度?

2021-12-02 20:24:40 463

原创 19. consuemr消费失败后,消息如何处理?

如何处理?

2021-12-02 20:24:31 1417

原创 20. rocketmq 延时消息

2021-12-02 20:22:47 808

原创 16. broker如何为consumer准备数据?

前面分析了broker的消息存储,也分析了consumer消费流程,今天来深入探究一下broker是如何为consumer准备数据的

2021-12-01 19:58:57 125

原创 15. broker如何将消息信息写入comsumeQueue和indexFile文件?

前两篇文章中已经分析了rocketmq的存储结构和如下将消息写入到commitlog文件中,今天来分析如何将消息信息写入到consumeQueue和indexFile文件中消息写入到commitlog之后,后续的步骤由ReputMessageService来承接 public DefaultMessageStore(final MessageStoreConfig messageStoreConfig, final BrokerStatsManager brokerStatsManager

2021-12-01 19:51:15 230

原创 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 271

原创 13. broker如何将消息存储到日志文件

消息存储分析

2021-12-01 14:12:09 246

原创 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 531

原创 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 518

原创 10. topic的自动创建流程

rocketmq在发送消息时,会先去获取topic的路由信息,如果topic是第一次发送消息,由于nameserver没有topic的路由信息,所以会再次以“TBW102”这个默认topic获取路由信息,假设broker都开启了自动创建开关,那么此时会获取所有broker的路由信息,消息的发送会根据负载算法选择其中一台Broker发送消息,消息到达broker后,发现本地没有该topic,会在创建该topic的信息塞进本地缓存中,同时会将topic路由信息注册到nameserver中,那么这样就会造成一个后

2021-11-29 13:03:08 1029

原创 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 50

原创 8. consumer向broker发送心跳

xx

2021-11-28 13:38:45 106

原创 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 139

原创 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 684

原创 5. broker 接收producer生产的消息

上一篇文章中,本地调试,发送的消息类型是SEND_MESSAGE_V2

2021-11-27 20:45:14 490

原创 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 431

原创 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 176

原创 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 630

原创 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 132

myfirstosg

osg入门教程,很不错的指导,我觉得osg很有意思

2013-12-21

helloword小程序

虚拟现实VRML方向小程序,简单的测试,VRML

2012-12-11

数据结构——家族管理系统

c语言的数据结构,家族信息管理,挺好的 了二叉树

2012-12-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除