dubbo官方文档
环境 : springboot 2.7.18 + nacos 0.2.1 + dubbo 3.2.3
0 .部分核心依赖 (版本需保持一致)
<java.version>1.8</java.version>
<dubbo.version>3.2.3</dubbo.version>
<dubbo-extensions-specify.version>1.0.0</dubbo-extensions-specify.version>
<nacos-config.version>0.2.1</nacos-config.version>
<org.apache.commons.version>3.12.0</org.apache.commons.version>
<spring.context.support.version>1.0.11</spring.context.support.version>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<!--dubbo 插件依赖 动态指定 IP-->
<dependency>
<groupId>org.apache.dubbo.extensions</groupId>
<artifactId>dubbo-cluster-specify-address-dubbo3</artifactId>
<version>${dubbo-extensions-specify.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-rpc-triple</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.spring</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.context.support.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>${nacos-config.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.spring</groupId>
<artifactId>spring-context-support</artifactId>
<version>${com.alibaba.spring.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${org.apache.commons.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-rpc-triple</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.spring</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!--dubbo 插件依赖 动态指定 IP-->
<dependency>
<groupId>org.apache.dubbo.extensions</groupId>
<artifactId>dubbo-cluster-specify-address-dubbo3</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--集成Nacos实现动态配置管理-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
1.取nacos配置
启动类添加注解
@NacosPropertySource(dataId = "example", autoRefreshed = true)
nacos添加配置
2.消费者测试调用法
@Service
public class TestService {
@DubboReference(version = "1.0.1")
StudentService studentService;
@NacosValue(value = "${testPort}", autoRefreshed = true)
private int testPort;
@NacosValue(value = "${testV}", autoRefreshed = true)
private String testV;
public void dubboTest() {
try {
System.out.println(" testPort is : " + testPort);
ReferenceConfig<StudentService> referenceConfig = new ReferenceConfig<>();
referenceConfig.setInterface(StudentService.class);
referenceConfig.setVersion(testV);// 官方文档没有这行 我的环境不指定版本会报错 贴下面
StudentService demoService = referenceConfig.get();
UserSpecifiedAddressUtil.setAddress(new Address("192.168.10.231", testPort, true));
demoService.sayHello("world");
}catch (Exception e){
e.printStackTrace();
}
}
3. 不指定版本报的错
java.lang.IllegalStateException: Failed to check the status of the service com.dmx.api.account.service.StudentService. No provider available for the service com.dmx.api.account.service.StudentService from the url consumer://192.168.10.231/com.dmx.api.account.service.StudentService?application=fishgame&background=false&dubbo=2.0.2&executor-management-mode=isolation&file-cache=true&interface=com.dmx.api.account.service.StudentService&methods=count,getById,getHelloCfgList,getHelloCfgSize,sayHello&pid=1744&qos.enable=true®ister.ip=192.168.10.231&release=3.2.3&side=consumer&sticky=false×tamp=1708606192694&unloadClusterRelated=false to the consumer 192.168.10.231 use dubbo version 3.2.3
at org.apache.dubbo.config.ReferenceConfig.checkInvokerAvailable(ReferenceConfig.java:694)
at org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:358)
at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:233)
at org.apache.dubbo.config.ReferenceConfigBase.get(ReferenceConfigBase.java:378)
at com.dmx.TestService.dubboTest(TestService.java:37)