CQRS
文章平均质量分 72
MAC完美
Read The Fucking Source Code
展开
-
(第2天)每日源码调试之旅--实现CQRS模式的AXON框架
接前一天的调试,调试断点来到SimpleCommandBus的doDispatch方法: 直接看新建unitOfWork实例,调用DefaultUnitOfWork(UnitOfWork的实现,用来处理单个message)的startAndGet方法: 此处先获得DefaultUnitOfWork实例,调用实例的start方法: 此处主要开启一个CurrentUnitOfWork...原创 2018-11-13 10:16:01 · 534 阅读 · 0 评论 -
(第4天)每日源码调试之旅--实现CQRS模式的AXON框架
接着前一天的调试,断点来到AggregateLifecycle的executeWithResult方法: 此处取不到AggregateLifecycle的实例,直接装载其子类this(EventSourcedAggregate实例),调用传入的回调WrappedMessageHandlingMember(MessageHandlingMember的抽象实现,增加了封装,可以给其代理的类拓展出...原创 2018-11-15 16:41:54 · 387 阅读 · 1 评论 -
(第1天)每日源码调试之旅--实现CQRS模式的AXON框架
demo文件结构: github地址:https://github.com/zxc1210449483/axondemo 开始调试:先在ProductController的commandGateway.sendAndWait(command)前打上端点,然后用postman发送POST请求: http://127.0.0.1:8080/product/31?name=ttt&pr...原创 2018-11-12 10:39:30 · 1628 阅读 · 1 评论 -
(第3天)每日源码调试之旅--实现CQRS模式的AXON框架
接前一天的调试,调试断点来到AggregateConstructorCommandHandler的handle方法: 首先调用AbstractRepository(提供aggregates存储的抽象,实际值为EventSourcingRepository)的newInstance构造一个Aggregate实例,传入的参数为命令handler的handle lambda表达式。 继续进入...原创 2018-11-14 10:31:47 · 443 阅读 · 0 评论 -
(第5天)每日源码调试之旅--实现CQRS模式的AXON框架
接着前一天的调试,断点来到AggregateLifecycle的execute方法: 此处并未直接执行task,而是继续调用AggregateLifecycle的executeWithResult方法: 同之前的调用,此处依然取不到AggregateLifecycle的实例,直接装载其this(子类EventSourcedAggregate实例),返回task的调用:task.run(...原创 2018-11-16 16:47:15 · 346 阅读 · 0 评论 -
(第6天)每日源码调试之旅--实现CQRS模式的AXON框架
接着前一天的调试,断点来到AggregateLifecycle的publishOnEventBus方法: initializing默认为false,进入到父类AnnotatedAggregate的publishOnEventBus(用所给的event bus发布事件到外部的事件handlers)方法,在这之前先看参数处理:msg.andMetaData方法返回msg的副本,该消息的元数据与给...原创 2018-11-19 09:59:44 · 340 阅读 · 1 评论 -
(第8天)每日源码调试之旅--实现CQRS模式的AXON框架
接着前一天的调试,断点来到eventsQueue中设置的PREPARE_COMMIT阶段的回调: 此阶段先判断UnitOfWork有没有parent和其parent是否在PREPARE_COMMIT之前的阶段,满足条件的话,将当前UnitOfWork的eventQueue加入到其parent的eventQueue里,此处没有parent直接进入doWithEvent方法:,进入前先处理参数,...原创 2018-11-21 15:42:13 · 435 阅读 · 0 评论 -
(第7天)每日源码调试之旅--实现CQRS模式的AXON框架
接着前一天的调试,断点来到LockingRepository的prepareForCommit方法: 此处先保证持有锁,然后进入父类AbstractRepository的prepareForCommit(用Current UnitOfWord注册handlers,用于在UnitOfWork提交后保存或删除所给的aggregate)方法: 此处添加CurrentUnitOfWork的保存...原创 2018-11-20 11:17:24 · 234 阅读 · 0 评论