Skip to content

多租户组件

简介

这是一个提供多租户能力的自动装配 Starter,组合已有的 risenet-y9boot-starter-jpa-tenantrisenet-y9boot-starter-liquibase 组件,配合数字底座管理,使接入系统中快速启用以下功能:

  • 系统启动时根据配置文件中配置的 y9.systemName 系统名找到其租户数据源,结合 liquibase 或 JPA 实现数据库表结构同步。
  • 租户租用系统时,被租用系统监听到租户租用系统事件,同步新增租户的数据库表结构。系统可以实现 net.risesoft.init.TenantDataInitializer 接口在数据库表结构同步完成后做一些租户数据的初始化。
  • 租户租用应用时,被租用系统监听到租户租用应用事件,系统可以实现 net.risesoft.init.TenantAppInitializer 接口做一些应用初始化。
  • 系统取消租用或数据源变化时,监听到租户数据源同步事件,刷新租户数据源。

目前有两种获取事件的方式,选择其中一种方式即可:

  • db,数据库轮询获取。
  • kafka,监听 Kafka 消息获取。

功能引用

添加依赖

添加 risenet-y9boot-starter-multi-tenant 多租户组件依赖

<dependency>
    <groupId>net.risesoft</groupId>
    <artifactId>risenet-y9boot-starter-multi-tenant</artifactId>
    <version>[最新正式版本]</version>
</dependency>

如需使用 SNAPSHOT 版本,且 maven 没有 POM 继承链至数字底座的 y9-digitalbase-parent 则还需将有生的私服仓库地址添加到 pom.xml 文件中。

xml
<repositories>
    <repository>
        <id>y9-internet-repo</id>
        <url>https://svn.youshengyun.com:9900/nexus/repository/maven-public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <!-- <updatePolicy>always</updatePolicy> -->
            <!-- always,daily(default),interval:XXX,never -->
        </snapshots>
    </repository>
</repositories>

修改配置文件

根据选择的获取事件方式修改配置文件:

  • db
yaml
y9:
    systemName: riseplatform # 系统名称需与数字底座中注册的一致
    feature:
        multi-tenant:
            event-source: db
properties
y9.systemName=riseplatform # 系统名称需与数字底座中注册的一致
y9.feature.multi-tenant.event-source=db
  • kafka

使用 kafka 时,还需添加 kafka 相关配置

yaml
spring:
    kafka:
        bootstrap-servers: localhost:9092
        consumer:
            group-id: y9demo-sync
y9:
    systemName: riseplatform # 系统名称需与数字底座中注册的一致
    feature:
        multi-tenant:
            event-source: kafka
properties
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=y9demo-sync
y9.systemName=riseplatform # 系统名称需与数字底座中注册的一致
y9.feature.multi-tenant.event-source=kafka

Released under the GPL-3.0 License.