Dewdrop 是一个自以为是的、简单而强大的框架,用于在 Java 中实现事件溯源。Dewdrop 的想法是通过将所有复杂的事件读取、写入和编组深入到框架中,使您的团队能够专注于根据 AggregateRoot 构建业务逻辑,从而轻松快速地构建事件驱动系统行为、查询逻辑和 ReadModel 组合。
目前,Dewdrop 仅支持使用EventStore作为其后备存储。
Dewdrop 严格遵循一些架构原则,以便轻松构建事件驱动的系统。以下是 Dewdrop 的核心概念:
- DDD - 领域驱动设计
- CQRS - 命令查询职责分离
- 事件溯源——事件驱动架构
使用方式
首先,您需要确保在本地运行 EventStore。为此,您可以下载EventStore客户端并运行它。或者,您可以运行存储库中包含的 docker 实例。要启动 docker 实例,请在 dewdrop 目录中运行以下命令:
docker-compose up -d
我们还假设大多数参与该项目的人都在像 Spring Boot 这样的依赖注入框架中运行它。如果是这种情况,您需要创建一个包装您的 DI 应用程序上下文的类。对于 Spring Boot,您将创建一个实现DependencyInjectionAdapter并将其公开为 bean 的类。
public class DewdropDependencyInjection implements DependencyInjectionAdapter { private ApplicationContext applicationContext; public DewdropDependencyInjection(ApplicationContext applicationContext) { this.applicationContext = applicationContext; }
@Override public <T> T getBean(Class<?> clazz) { return (T) applicationContext.getBean(clazz); } }
|
这让 Dewdrop 知道它应该使用应用程序上下文来获取它需要的 Spring 托管 bean。
下一步是创建一个DewdropConfiguration用于配置 Dewdrop 框架的类。
import java.beans.BeanProperty;
public class DewdropConfiguration { @Autowired ApplicationContext applicationContext; @Bean public DewdropDependencyInjection dependencyInjection() { return new DewdropDependencyInjection(applicationContext); } @Bean public DewdropProperties dewdropProperties() { return DewdropProperties.builder() .packageToScan("events.dewdrop") .packageToExclude("events.dewdrop.fixture.customized") .connectionString("esdb://localhost:2113?tls=false") .create(); } @Bean public Dewdrop dewdrop() { return DewdropSettings.builder() .properties(dewdropProperties()) .dependencyInjectionAdapter(dependencyInjection()) .create() .start(); } }
|
就是这样!您现在可以运行该应用程序,它将启动 Dewdrop 框架。