在弹簧启动时为Axon Framework设置Mongo扩展

问题描述 投票:1回答:2

所以一开始我添加了一个属性文件:

spring.data.mongodb.uri = mongodb的://轴突:轴突@ aurl:27017 / axonframework

哪个有效,但我被迫使用axonframework作为db名称,因为它是我在mongo db中创建的。

现在控制数据库名称和其他细节在这种情况下不是一个选项,所以我去检查并发现以下内容:

@configuration
public class AxonConfiguration {

    @Value("${mongo.host:127.0.0.1}")
    private String mongoHost;

    @Value("${mongo.port:27017}")
    private int mongoPort;

    @Value("${mongo.db:test}")
    private String mongoDB;

    @Bean
    public MongoSagaStore sagaStore() {
        return new MongoSagaStore(axonMongoTemplate());
    }

    @Bean
    public TokenStore tokenStore(Serializer serializer) {
        return new MongoTokenStore(axonMongoTemplate(), serializer);
    }

    @Bean
    public EventStorageEngine eventStorageEngine(Serializer serializer) {
        return new MongoEventStorageEngine(serializer, null, axonMongoTemplate(), new DocumentPerEventStorageStrategy());
    }

    @Bean
    public MongoTemplate axonMongoTemplate() {
        return new DefaultMongoTemplate(mongo(), mongoDB);
    }

    @Bean
    public MongoClient mongo() {
        MongoFactory mongoFactory = new MongoFactory();
        mongoFactory.setMongoAddresses(Collections.singletonList(new ServerAddress(mongoHost, mongoPort)));
        return mongoFactory.createMongo();
    }
}

现在显然这适用于人们,但我无法做到的是我应该如何设置用户名和密码?

我正在使用axon 4.1,axonframework.extensions.mongo 4.1

java spring mongodb axon
2个回答
0
投票

这个问题与轴突本身并没有关系,但更可能是mongo客户端实例的弹簧配置,因为mongo的使用只是对轴突框架的扩展。

AFAIK就是这样

spring.data.mongodb.passwordspring.data.mongodb.username

您应该考虑更改代码中的一件事

return new DefaultMongoTemplate(mongo(), mongoDB);

你调用指定为bean的方法,所以在spring中你应该将它连接到你的方法参数,如下所示:

 public MongoTemplate axonMongoTemplate(MongoClient client) {
     return new DefaultMongoTemplate(client, mongoDB);
 }


0
投票

您共享的代码片段与Axon Framework版本4.x或Axon Mongo Extension版本4.x不符。从版本3到4的转变几乎取代了基础架构组件的所有构造函数,转而支持Builder模式。

因此,你不应该做new MongoEventStorageEngine(...),而应该做:

MongoEventStorageEngine.builder().mongoTemplate(axonMongoTemplate).build()

如果您仍然可以使用构造函数,我假设您仍然在类路径上的某个位置安装了Axon 3!

关于Mongo细节,顺便说一下,我会相信@ PolishCivil的声明。

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.