SpringCloud 实战三十:nacos服务消费者调用

  作者:记性不好的阁主

  • nacos自带负载均衡


1、先准备三个模块:


cloudalibaba-consumer-nacos-order83

cloudalibaba-provider-payment9001

cloudalibaba-provider-payment9002


一个消费者,两个提供者


2、三者引入相同的依赖:


<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.laoxu.springcloud</groupId>
<artifactId>cloud-api-common</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>


3、配置端口


cloudalibaba-consumer-nacos-order83


server:
port: 83

spring:
application:
name: nacos-order-consumer

cloud:
nacos:
discovery:
server-addr: localhost:8848 # 配置nacos地址

server-url:
nacos-user-service: http://nacos-payment-provider


cloudalibaba-provider-payment9001


server:
port: 9001

spring:
application:
name: nacos-payment-provider

cloud:
nacos:
discovery:
server-addr: localhost:8848 # 配置nacos地址
management:
endpoints:
web:
exposure:
include: '*'


cloudalibaba-provider-payment9002


server:
port: 9002

spring:
application:
name: nacos-payment-provider

cloud:
nacos:
discovery:
server-addr: localhost:8848 # 配置nacos地址
management:
endpoints:
web:
exposure:
include: '*'



4、主启动类


@SpringBootApplication
@EnableDiscoveryClient
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}


5、控制器


cloudalibaba-consumer-nacos-order83


package com.laoxu.springcloud.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@Slf4j
public class OrderNacosController {


@Autowired
private RestTemplate restTemplate;

@Value("${server-url.nacos-user-service}")
public String serverURL;

@GetMapping("/consumer/payment/nacos/{id}")
public String paymentInfo(@PathVariable("id") Integer id){
return restTemplate.getForObject(serverURL + "/payment/nacos/" + id, String.class);
}

}


cloudalibaba-provider-payment9001和cloudalibaba-provider-payment9002


package com.laoxu.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PaymentController {

@Value("${server.port}")
public String serverPort;

@GetMapping("/payment/nacos/{id}")
public String getPayment(@PathVariable("id") Integer id){
return "nacos registry, serverPort: " + serverPort + "\t" + id;
}
}


6、消费者端配置restTemplate负载均衡


package com.laoxu.springcloud.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}


7、启动服务




8、查看:http://localhost:8848/nacos




可以看到两个提供者,一个消费者


9、访问:http://localhost:83/consumer/payment/nacos/1 可以看到进行了轮询负载均衡







相关推荐

评论 抢沙发

表情

分类选择