//不需要认证的配置
package com.sea.elsa.subscribe.milestone.common.config; import java.util.Collections; import org.axonframework.eventhandling.saga.repository.SagaStore; import org.axonframework.eventsourcing.eventstore.EventStorageEngine; import org.axonframework.mongo.DefaultMongoTemplate; import org.axonframework.mongo.MongoTemplate; import org.axonframework.mongo.eventhandling.saga.repository.MongoSagaStore; import org.axonframework.mongo.eventsourcing.eventstore.MongoEventStorageEngine; import org.axonframework.mongo.eventsourcing.eventstore.MongoFactory; import org.axonframework.mongo.eventsourcing.eventstore.documentperevent.DocumentPerEventStorageStrategy; import org.axonframework.serialization.json.JacksonSerializer; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.mongodb.MongoClient; import com.mongodb.ServerAddress; @Configuration public class AxonConfig { @Value("${spring.data.mongodb.host}") private String mongoUrl; @Value("${spring.data.mongodb.database}") private String mongoDbName; @Value("${spring.data.mongodb.port}") private int mongoPort; @Bean public EventStorageEngine eventStorageEngine(){ return new MongoEventStorageEngine( new JacksonSerializer(),null, axonMongoTemplate(), new DocumentPerEventStorageStrategy()); } @Bean(name = "axonMongoTemplate") public MongoTemplate axonMongoTemplate() { return new DefaultMongoTemplate(mongoClient(), mongoDbName); } @Bean public MongoClient mongoClient(){ MongoFactory mongoFactory = new MongoFactory(); mongoFactory.setMongoAddresses(Collections.singletonList(new ServerAddress(mongoUrl,mongoPort))); return mongoFactory.createMongo(); } @Bean public SagaStore sagaStore(){ MongoTemplate mongoTemplate = new DefaultMongoTemplate(mongoClient()); return new MongoSagaStore(mongoTemplate, new JacksonSerializer()); } }
需要认证的配置:
package com.sea.elsa.subscribe.milestone.common.config; import org.axonframework.eventhandling.saga.repository.SagaStore; import org.axonframework.eventsourcing.eventstore.EventStorageEngine; import org.axonframework.mongo.DefaultMongoTemplate; import org.axonframework.mongo.MongoTemplate; import org.axonframework.mongo.eventhandling.saga.repository.MongoSagaStore; import org.axonframework.mongo.eventsourcing.eventstore.MongoEventStorageEngine; import org.axonframework.mongo.eventsourcing.eventstore.documentperevent.DocumentPerEventStorageStrategy; import org.axonframework.serialization.Serializer; import org.axonframework.serialization.json.JacksonSerializer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.mongo.MongoClientFactory; import org.springframework.boot.autoconfigure.mongo.MongoProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import com.mongodb.MongoClient; @Configuration public class CommandRepositoryConfiguration { @Value("${spring.data.mongodb.database}") private String mongoDbName; //@Value("${mongodb.username}") //private String mongoUserName; //@Value("${mongodb.password}") //private String mongoPass; //@Value("${mongodb.events.collection.name}") // private String eventsCollectionName; //@Value("${mongodb.events.snapshot.collection.name}") //private String snapshotCollectionName; @Autowired private MongoProperties mongoProperties; @Autowired private Environment env; @Qualifier("eventSerializer") @Bean public Serializer axonJsonSerializer() { return new JacksonSerializer(); } @Bean public EventStorageEngine eventStorageEngine(){ return new MongoEventStorageEngine( axonJsonSerializer() ,null, axonMongoTemplate(), new DocumentPerEventStorageStrategy()); } @Bean(name = "axonMongoTemplate") public MongoTemplate axonMongoTemplate() { return new DefaultMongoTemplate(mongoClient(), mongoDbName); } @Bean public MongoClient mongoClient(){ // MongoFactory mongoFactory = new MongoFactory(); // mongoFactory.setMongoAddresses(Arrays.asList(new ServerAddress(mongoUrl))); //// new MongoClient(new ServerAddress(mongoUrl),new Mongocre,); // return mongoFactory.createMongo(); // public MongoClient(final List<ServerAddress> seeds, final MongoCredential credential, final MongoClientOptions options) { // super(seeds, singletonList(credential), options); // } //return new MongoClient(Arrays.asList(new ServerAddress(mongoUrl)), MongoCredential.createCredential(mongoUserName, mongoDbName, mongoPass.toCharArray()),MongoClientOptions.builder().build()); MongoClientFactory mongoClientFactory = new MongoClientFactory(mongoProperties, env); return mongoClientFactory.createMongoClient(null); } @Bean public SagaStore sagaStore(){ MongoTemplate mongoTemplate = new DefaultMongoTemplate(mongoClient(),mongoDbName); return new MongoSagaStore(mongoTemplate,new JacksonSerializer()); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?