nacos支持springcloud注册中心,同事也支持dubbo为注册中心,今天分享怎么用http中feign的方式去调用dubbo服务,其实看到这也就行了,一句话其实还是用http的方式掉的,没有什么新鲜的。
一、创建服务提供者
1. 创建fast-dubbo-server工程,首先是maven依赖
<dependency>
<groupId>fast.cloud.nacos</groupId>
<artifactId>fast-dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2. 接着就是配置
server:
port: 9090
dubbo:
scan:
base-packages: fast.cloud.nacos.dubbo.server #dubbo 提供的服务包路径
protocol:
name: dubbo #用的是dubbo协议
port: -1
registry:
address: spring-cloud://localhost #注册到springcloud注册中心上
spring:
application:
name: dubbo-spring-cloud-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848
main:
allow-bean-definition-overriding: true
3. 创建接口,注意这里的servic的包位置,对就是这样加了RestController这样把端口暴露出去,让feign调用,实在是没什么新鲜的了。
package fast.cloud.nacos.dubbo.server;
import fast.cloud.nacos.dubbo.api.HelloService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
// 注意:是 org.apache.dubbo.config.fast.cloud.nacos.webflux.annotation.Service 注解
@Service
@RestController
public class HelloServiceImpl implements HelloService {
@Override
@GetMapping("/test")
public String hello(String name) {
return "hello " + name;
}
}
二、创建服务消费者工程
1. 创建 fast-dubbo-cloud-consumer,这个其实就是一个feign远程调用的🌰
pom依赖
<dependency>
<groupId>fast.cloud.nacos</groupId>
<artifactId>fast-dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Cloud Nacos Service Discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2. 配置
server:
port: 8081
spring:
application:
name: fast-dubbo-cloud-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
3.接口
@RestController
public class DemoController {
@Autowired
private UserRemote userRemote;
@Autowired
private RestTemplate restTemplate;
@GetMapping("/test/feign")
public String hello(String name) {
return userRemote.hello(name);
}
@GetMapping("/test/restTemplate")
public String restTemplate(String name) {
return restTemplate.getForObject("http://dubbo-spring-cloud-provider/test?name=" + name, String.class);
}
}
4. 启动两个项目 访问 http://localhost:8081/test/feign?name=123
github地址: https://github.com/fafeidou/fast-cloud-nacos 觉得写的好的话请给 star 点赞 谢谢