网站首页 > 基础教程 正文
MongoEventStorageEngine 有一个 @PostConstruct 注解方法,称为 ensureIndexes,它将生成正确操作所需的索引。 这意味着,当在自动调用 @PostConstruct 处理程序的容器中运行时,“聚合标识符” 和“事件序列号”所需的唯一索引会在创建事件存储时创建。
请注意,查询优化和更新速度之间始终存在平衡。 负载测试最终是发现哪些索引提供最佳性能的最佳方式。
- 正常操作使用 在领域事件(默认名称:"domainevents")集合中的 "aggregateIdentifier"、"type" 和 "sequenceNumber" 上自动创建索引。 此外,在域事件(默认名称:"domainevents")集合上配置了 "timestamp" 和 "sequenceNumber" 的非唯一索引,用于 tracking event processor。
- 快照
"aggregateIdentifier" 和 "sequenceNumber" 的(唯一)索引会在快照事件(默认名称:"snapshotevents")集合中自动创建。 - saga
在 saga(默认名称:"sagas")集合中的 "sagaIdentifier" 上放置一个(唯一)索引。 在 saga(默认名称:"sagas")集合中的 "sagaType"、"associations.key" 和 "associations.value" 属性上放置索引。
Note | 在 Axon Framework 3 之前的版本中,我们发现 MongoDb 非常适合作为 Event Store。 然而,随着跟踪事件处理器的引入以及它们如何跟踪事件,我们在 Mongo 事件存储实现方面遇到了一些低效问题。 我们建议使用像 Axon Server 这样的专用事件存储,或者基于 RDBMS(例如 JPA 或 JDBC 实现),并且仅在您发现 Mongo 的性能有益时才建议在此用例中使用 Mongo 为您的应用程序。 |
在 Spring Boot 中配置
// 事件存储 “EmbeddedEventStore” 将事件的实际存储和检索委托给 “EventStorageEngine”。
@Bean
public EmbeddedEventStore eventStore(EventStorageEngine storageEngine, AxonConfiguration configuration) {
return EmbeddedEventStore.builder()
.storageEngine(storageEngine)
.messageMonitor(configuration.messageMonitor(EventStore.class, "eventStore"))
.build();
}
// `MongoEventStorageEngine` 将每个事件存储在单独的 MongoDB 文档中
@Bean
public EventStorageEngine storageEngine(MongoClient client) {
return MongoEventStorageEngine.builder().mongoTemplate(DefaultMongoTemplate.builder().mongoDatabase(client).build()).build();
}
猜你喜欢
- 2024-10-29 57个挑战之57(part6):客户端+web前端+服务端代码实现
- 2024-10-29 技术干货|MongoDB数据库常见操作命令
- 2024-10-29 ABP vNext框架文档解读28-数据过滤
- 2024-10-29 自建MongoDB实践:MongoDB 分片集群
- 2024-10-29 小程序 随机读取数据并生成分享图片 上手笔记
- 2024-10-29 go-mongox:简单高效,让文档操作和 bson 数据构造更流畅
- 2024-10-29 当MongoDB遇见Spark mongodb campass
- 2024-10-29 MongoDB 5.0 官方文档学习笔记 mongodb教程
- 2024-10-29 好东西,MySQL 数据库 MongoDB详解
- 2024-10-29 MongoDB 入门 day04 mongodb27017
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- mysql教程 (60)
- pythonif (86)
- location.href (69)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)