如何使用Micronaut配置多租户mongodb集合?

hgb9j2n6  于 2023-06-29  发布在  Go
关注(0)|答案(1)|浏览(106)

我有一个要求,以创建mongodb集合的租户特定。例如:我有一个名为audit_logs的集合,但我想用以下方式创建
租户:EAD集合:ead_audit_logs租户:GTC收集:gtc_audit_logs等等。
有人能帮我在微型机器人上做配置吗?
我正在使用microaut-data,并且在pojo/entity类中要完成的配置不起作用。

@Getter
@Setter
@MappedEntity
@Property(name = "#{@ThreadContext.get('tenant')}_audit_log")
public class AuditLog {

    @Id
    @GeneratedValue
    private String id;
}
iqxoj9l9

iqxoj9l91#

您提供的代码无效,因为类实体上的@Property注解没有任何效果。要实现所需的结果,您可以为MongoCollectionNameProvider接口提供自定义实现。

示例:

@Primary
@Singleton
public class CustomMongoCollectionNameProvider implements MongoCollectionNameProvider {

    @Override
    public String provide(PersistentEntity persistentEntity) {
        return String.format("%s_%s", ThreadContext.get("tenant"), persistentEntity.getPersistedName());
    }

}

在上面的例子中,我们覆盖了MongoCollectionNameProvider接口中的provide方法。您可以将集合命名逻辑添加到此方法。
并确保使用@Primary@Singleton注解该类。这将确保自定义实现覆盖默认bean DefaultMongoCollectionNameProvider。

相关问题