nacos和springcloud融合注册服务
提供者
build.gradle
plugins {
id 'org.springframework.boot' version '2.6.11'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'maven'
}
group = 'com.emapgo'
archivesBaseName = 'hdmap4'
version = '1.0.0'
sourceCompatibility = '1.8'
repositories {
mavenLocal()
maven {
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2021.0.4.0')
compile('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2021.0.4.0')
}
spring boot version: 2.6.11
spring cloud alibaba version: 2021.0.4.0
参考:spring-cloud-alibaba版本说明
application.yaml
server:
port: 8080
spring:
cloud:
nacos:
config:
server-addr: 192.168.3.2:30848
namespace: dev
discovery:
register-enabled: true
server-addr: 192.168.3.2:30848
namespace: dev
group: test
service: provider
config:
import:
- optional:nacos:hdmap4?group=test
register-enabled: 开启自动注册
server-addr: nacos服务地址端口
namespace: 命名空间
group: 分组
service: 注册服务名称
参考:
SpringBootApplication
@SpringBootApplication
public class HdmapApplication {
public static void main(String[] args) {
SpringApplication.run(HdmapApplication.class, args);
}
}
RestController
@RestController
public class TestController {
@Value("${server.port}")
private int myport;
@GetMapping("/pay/{orderid}")
public ResponseEntity<String> pay(@PathVariable("orderid") Long orderid) throws NacosException {
return ResponseEntity.ok("支付服务successful! orderid=" + orderid + ", 支付成功。 支付服务的端口为port=" + myport);
}
}
消费者(使用openfeign消费服务)
build.gradle
plugins {
id 'org.springframework.boot' version '2.6.11'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'maven'
}
group = 'com.emapgo'
archivesBaseName = 'feign-test'
version = '1.0.0'
sourceCompatibility = '1.8'
repositories {
mavenLocal()
maven {
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2021.0.4.0')
compile('org.springframework.cloud:spring-cloud-starter-openfeign:3.1.5')
compile('org.springframework.cloud:spring-cloud-loadbalancer:3.1.5')
}
由于SpringCloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错。
application.yaml
server:
port: 8081
spring:
cloud:
nacos:
discovery:
register-enabled: true
server-addr: 192.168.3.2:30848
namespace: dev
group: test
service: consumer
SpringBootApplication
@SpringBootApplication
@EnableFeignClients
public class FeignApplication {
public static void main(String[] args) {
SpringApplication.run(FeignApplication.class, args);
}
}
@EnableFeignClients: 启用Feign客户端
RestController
@RestController
public class TestFeignController {
@Autowired
public TestFeignService feignService;
@GetMapping("/test/{orderid}")
public ResponseEntity<String> consumerFeign( @PathVariable("orderid") Long orderid) {
return ResponseEntity.ok ("调用订单模拟服务完成。 订单orderid:" + orderid + ", 调用返回的Body:" + feignService.pay(orderid).getBody() );
}
}
Service
@FeignClient("provider")
@Component
public interface TestFeignService {
@GetMapping("/pay/{payid}")
public ResponseEntity<String> pay(@PathVariable("payid") Long payid);
}
@FeignClient: 定义客户端,参数为nacos服务名称。服务路径与提供者路径一致。