聊聊dbsync的Criterion

2021-04-21
阅读 3 分钟
1.5k
序本文主要研究一下dbsync的CriterionCriterion {代码...} Criterion是一个fmt.Stringer类型between {代码...} between定义from、to两个属性lessOrEqual {代码...} lessOrEqual定义了value属性,表达式为<=greaterThan {代码...} greaterThan定义了value属性,表达式为>greaterOrEqual {代码...} greaterOrEqual定...

聊聊event-sourcing-cqrs的model

2021-04-15
阅读 3 分钟
1.5k
Aggregate定义了id、baseVersion、newEvents属性;其applyNewEvent方法会执行apply(event)及newEvents.add(event);apply方法通过反射执行event的apply方法

聊聊ddd-by-examples的DomainEvent

2021-04-13
阅读 3 分钟
1.8k
JustForwardDomainEventPublisher实现了DomainEvents接口,其publish方法通过spring的ApplicationEventPublisher来发布

聊聊dddsample-core的model

2021-04-12
阅读 3 分钟
1.8k
序本文主要研究一下dddsample-core的modelEntity {代码...} Entity接口定义了sameIdentityAs方法ValueObject {代码...} ValueObject接口定义了sameValueAs方法TrackingId {代码...} TrackingId实现了ValueObject接口,sameValueAs方法通过equals方法判断Type {代码...} Type枚举实现了ValueObject接口,其sameValueAs方...

聊聊dddsample-core的Specification

2021-04-12
阅读 4 分钟
1.5k
AndSpecification继承了AbstractSpecification,它定义了spec1、spec2属性,其isSatisfiedBy返回的是spec1.isSatisfiedBy(t) && spec2.isSatisfiedBy(t)

聊聊go.cqrs的EventHandler

2021-04-10
阅读 3 分钟
1.9k
EventMessage接口定义了AggregateID、GetHeaders、SetHeader、Event、EventType、Version方法

聊聊go.cqrs的Dispatcher

2021-04-09
阅读 3 分钟
1.7k
InMemoryDispatcher定义了map[string]CommandHandler属性,其Dispatch方法根据command.CommandType()获取handler,然后执行handler.Handle(command);其RegisterHandler方法遍历commands,然后获取command的type,挨个注册到map[string]CommandHandler中

聊聊go.cqrs的DomainRepository

2021-04-08
阅读 5 分钟
1.8k
GetEventStoreCommonDomainRepo定义了eventStore、eventBus、streamNameDelegate、aggregateFactory、eventFactory属性,其Load方法先通过r.aggregateFactory.GetAggregate获取aggregate,再通过r.streamNameDelegate.GetStreamName(aggregateType, id)获取streamName,然后通过r.eventStore.NewStreamReader去遍历event...

聊聊go.cqrs的AggregateRoot

2021-04-07
阅读 5 分钟
1.8k
AggregateRoot接口定义了AggregateID、OriginalVersion、CurrentVersion、IncrementVersion、Apply、TrackChange、GetChanges、ClearChanges方法

聊聊dkron的Scheduler

2021-04-06
阅读 4 分钟
2.2k
Scheduler定义了Cron、Started、EntryJobMap属性;NewScheduler方法创建默认的Scheduler;Start方法遍历jobs,挨个设置job.Agent,然后添加到Scheduler中,之后执行Scheduler.Cron.Start();Stop方法执行Scheduler.Cron.Stop();Restart方法执行Stop、ClearCron、Start方法;ClearCron设置Cron为nil

聊聊dkron的fsm

2021-04-05
阅读 4 分钟
1.7k
MessageType可以分为SetJobType、DeleteJobType、SetExecutionType、DeleteExecutionsType、ExecutionDoneType

聊聊machinery的TaskProcessor

2021-04-04
阅读 4 分钟
2.9k
Worker实现了TaskProcessor接口,其Process方法先通过worker.server.GetRegisteredTask获取taskFunc,然后通过signature更新state为RECEIVED,之后设置为STARTED,之后执行task.Call(),最后根据结果更新task为failed或者success

聊聊machinery的Lock

2021-04-03
阅读 3 分钟
1.5k
Lock定义了rclient、retries、interval属性;New方法根据cnf、addrs、db、retries创建lock;LockWithRetries方法根据retries次数来尝试r.Lock(key, unixTsToExpireNs),都没有成功则返回ErrRedisLockFailed;Lock方法执行r.rclient.SetNX,如果不成功则判断是否过期,过期的话执行执行r.rclient.GetSet,若确实过期了则...

聊聊machinery的TaskState

2021-04-02
阅读 7 分钟
1.9k
TaskState定义了PENDING、RECEIVED、STARTED、RETRY、SUCCESS、FAILURE状态;TaskState定义了TaskUUID、TaskName、State、Results、Error、CreatedAt、TTL属性;它提供了NewPendingTaskState、NewReceivedTaskState、NewStartedTaskState、NewSuccessTaskState、NewFailureTaskState、NewRetryTaskState方法来根据Signat...

聊聊eventhorizon的EventBus

2021-04-01
阅读 4 分钟
2k
序本文主要研究一下eventhorizon的EventBusEventBuseventhorizon/eventbus.go {代码...} EventBus接口内嵌了EventHandler接口,定义了AddHandler、Errors、Wait方法EventBuseventhorizon/eventbus/local/eventbus.go {代码...} EventBus定义了group、registered、registeredMu、errCh、wg、codec属性;HandleEvent方法先...

聊聊eventhorizon的Aggregate

2021-03-31
阅读 4 分钟
1.3k
序本文主要研究一下eventhorizon的AggregateAggregateeventhorizon/aggregate.go {代码...} Aggregate接口内嵌了Entity及CommandHandler,定义了AggregateType方法AggregateStoreeventhorizon/aggregate.go {代码...} AggregateStore定义了Load、Save方法AggregateStoreeventhorizon/aggregatestore/model/aggregatestor...

聊聊JESA的EventRecorder

2021-03-30
阅读 6 分钟
1.6k
序本文主要研究一下JESA的EventRecorderEventRecorderJESA/src/main/java/Jesa/EventRecorder.java {代码...} EventRecorder定义了records,提供了record、clear、hasEvents、toArray方法InstanceEventRouterJESA/src/main/java/Jesa/InstanceEventRouter.java {代码...} InstanceEventRouter接口定义了configureRoute、...

聊聊cheddar的MessageHandlerExecutor

2021-03-29
阅读 11 分钟
1.4k
Cheddar/cheddar/cheddar-messaging/src/main/java/com/clicktravel/cheddar/infrastructure/messaging/pooled/listener/MessageHandlerExecutor.java

聊聊cheddar的PendingResult

2021-03-28
阅读 5 分钟
1.6k
Cheddar/cheddar/cheddar-application/src/main/java/com/clicktravel/cheddar/application/pending/result/PendingResult.java

聊聊cheddar的MessageSender

2021-03-27
阅读 9 分钟
1.6k
Cheddar/cheddar/cheddar-messaging/src/main/java/com/clicktravel/cheddar/infrastructure/messaging/MessageSender.java

聊聊cheddar的tx

2021-03-26
阅读 9 分钟
1.5k
Cheddar/cheddar/cheddar-tx/src/main/java/com/clicktravel/cheddar/infrastructure/messaging/tx/MessageAction.java

聊聊cheddar的DomainEvent

2021-03-25
阅读 2 分钟
1.2k
Cheddar/cheddar/cheddar-domain/src/main/java/com/clicktravel/cheddar/domain/event/DomainEvent.java

聊聊cheddar的events

2021-03-24
阅读 3 分钟
1.4k
Cheddar/cheddar/cheddar-events/src/main/java/com/clicktravel/cheddar/event/Event.java

聊聊go-ddd-sample

2021-03-22
阅读 2 分钟
4k
序本文主要赏析一下go-ddd-sample项目结构 {代码...} 这里分为application、domain、infrastructure、interfaces四层domain {代码...} domain层定义了模型及repository接口,同时利用go generate生成repository的mock实现application {代码...} applicatioin层调用domain层来进行业务编排infrastructure {代码...} infra...

聊聊go-bank-transfer项目对Clean Architecture的实践

2021-03-21
阅读 5 分钟
1.4k
序本文主要赏析一下go-bank-transfer对于Clean Architecture的实践项目结构 {代码...} 这里分为adapter、domain、infrastructure、usecase四层domainaccount {代码...} account定义了AccountRepository接口及Account类型,同时还提供了Withdraw、Deposit方法transfer {代码...} transfer定义了TransferRepository接口及T...

聊聊buckpal对于Hexagonal Architecture的实践

2021-03-20
阅读 10 分钟
1.6k
这里分为adapter、application、domain三层;其中application层定义了port包,该包定义了in、out两种类型的接口;adapter层也分in、out两类,分别实现application/port层的接口;application的service则实现了port的接口

Java16的新特性

2021-03-17
阅读 5 分钟
7.3k
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java18的新特性Java19的新特性Java20的新特性Java21的新特性Java22的新特性序本文主要讲述一下Java16的新特性版...

聊聊Onion Architecture项目结构

2021-03-15
阅读 3 分钟
2.2k
序本文主要研究一下Onion Architecture项目结构Onion ArchitectureOnion Architecture定义了domain、repository、services、ui这几层,其核心要点如下:整个应用基于独立的domain构建内部的layer定义接口,外部的layer实现接口内层与外层通过接口解耦services(business logic)可以独立于infrastructure编译和运行示例结...

聊聊Ports and Adapters architecture

2021-03-15
阅读 2 分钟
2.7k
Ports and Adapters architecture,又叫Hexagonal architecture,其中ports层是六边形的边界,其中port又可以分为driver port及driven port,简单理解对应输入层及输出层;边界保护的是内部的app,其中app包括use cases或者叫做application services层以及domain层;adapter可以理解为将外部依赖进行适配,实现port层定...

聊聊golang的clean architecture项目结构

2021-03-13
阅读 2 分钟
3.2k
clean architecture定义了四层结构,最内层是entities(enterprise business rules),再往外是use cases(application business rules),接着是interface adapters(比如controller、presenters、gateways),最外层是frameworks & drivers(比如web、ui、db、devices、external interfaces)