nacos服务中心

该文章展示了如何将Nacos与SpringCloud结合,用于服务的注册与发现。服务提供者配置了Nacos的配置中心和注册功能,使用SpringBootApplication和@RestController创建RESTAPI。而服务消费者利用OpenFeign进行服务调用,通过@FeignClient与Nacos注册的服务交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提供者

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: 注册服务名称
参考:

  1. Nacos配置
  2. Nacos系统参数

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服务名称。服务路径与提供者路径一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值