Solon

nacos-solon-cloud-plugin

v2.7.3 </> markdown
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>nacos-solon-cloud-plugin</artifactId>
</dependency>

1、描述

分布式扩展插件。基于 nacos(代码仓库)适配的 solon cloud 插件。提供配置服务、注册与发现服务。

2、能力支持

云端能力接口说明备注
CloudConfigService云端配置服务支持 namespace;支持 group
CloudDiscoveryService云端注册与发现服务支持 namespace;支持 group

3、配置示例

solon.app:
  name: "demoapp"
  group: "demo"
  namespace: "test"

solon.cloud.nacos:
  server: "localhost:8848"           #nacos 服务地址
  config:
    load: "demoapp.yml"                #加载配置到应用属性(多个以","隔开)//对应 dataId

更丰富的配置:

solon.app:
  name: "demoapp"
  group: "demo"
  meta:                   #添加应用元信息(可选)
    version: "v1.0.2" 
    author: "noear"
  tags: "aaa,bbb,ccc"     #添加应用标签(可选)

solon.cloud.nacos:
  server: "localhost:8848,localhost:8847"  #nacos 服务地址
  contextPath: "nacosx"                    #nacos 服务的上下文路径(可选)
  username: "aaa"
  password: "bbb"
  config:
    load: "demoapp.yml,group:test.yml"                #加载配置到应用属性(多个以","隔开)

提醒:通过 "...config.load" 加载的配置,会进入 Solon.cfg() 可使用 @Inject 注入。"group:key" 是指定分组的配置加载。

4、代码应用

public class DemoApp {
    public void main(String[] args) {
        //启动时,服务会自动注册
        SolonApp app = Solon.start(DemoApp.class, args);
    }
}

@Slf4j
@Controller
public class DemoController{
    //配置服务的功能(注解模式) //只有接收实体为单例,才能用 autoRefreshed
    @CloudConfig(name = "demoTitle", autoRefreshed = true)  
    String demoTitle;
    
     //配置服务的功能(注解模式)
    @CloudConfig("demoDb") 
    DbContext demoDb;

    @NamiClient            //RPC服务发现的功能(注解模式)
    RockService rockService;
   
    @Mapping("/")
    public void test(){
        //配置服务:使用配置的数据库上下文进行查询
        Map map = demoDb.table("water_reg_service").limit(1).selectMap("*");

        //Rpc发现服务:调用Rpc接口
        AppModel app = rockService.getAppById(12);
    }
}

//配置订阅:关注配置的实时更新
@CloudConfig("demoDb")
public class TestConfigHandler implements CloudConfigHandler {
    @Override
    public void handler(Config config) {

    }
}

5、演示项目