本文共 4036 字,大约阅读时间需要 13 分钟。
在父工程下新建一个module,命名为 cloudalibaba-provider-payment-9001。
在项目的 pom.xml 中添加以下依赖:
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
在 application.yml 中添加以下内容:
server: port: 9001spring: application: name: nacos-payment-provider cloud: nacos: discovery: server-addr: 172.28.129.83:8848 management: endpoints: web: exposure: include: '*'
创建一个主启动类 PaymentApplication9001:
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication@EnableDiscoveryClientpublic class PaymentApplication9001 { public static void main(String[] args) { SpringApplication.run(PaymentApplication9001.class, args); }} 创建 PaymentController:
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;@RestControllerpublic class PaymentController { @Value("${server.port}") private String serverPort; @GetMapping(value = "/payment/nacos/{id}") public String getPayment(@PathVariable("id") Integer id) { return "nacos registry, serverPort: " + serverPort + "\t id=" + id; }} 在父工程下新建一个module,命名为 cloudalibaba-provider-payment-9002。
修改 application.yml 中的端口号为 9002,并保留服务发现地址:
server: port: 9002spring: application: name: nacos-payment-provider-9002 cloud: nacos: discovery: server-addr: 172.28.129.83:8848
创建一个主启动类 PaymentApplication9002:
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication@EnableDiscoveryClientpublic class PaymentApplication9002 { public static void main(String[] args) { SpringApplication.run(PaymentApplication9002.class, args); }} 新建一个module,命名为 cloudalibaba-consumer-nacos-order-83。
在 application.yml 中添加以下内容:
server: port: 83spring: application: name: nacos-order-consumer cloud: nacos: discovery: server-addr: 172.28.129.83:8848 service-url: nacos-user-service: http://nacos-payment-provider
创建 ApplicationContextConfig:
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;@Configurationpublic class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); }} 创建 OrderNacosController:
import lombok.extern.slf4j.Slf4j;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;import javax.annotation.Resource;@RestController@Slf4jpublic class OrderNacosController { @Resource private RestTemplate restTemplate; @Value("${service-url.nacos-user-service}") private String serverURL; @GetMapping(value = "/consumer/payment/nacos/{id}") public String paymentInfo(@PathVariable("id") Long id) { log.info("请求路径: /consumer/payment/nacos/{}", id); return restTemplate.getForObject(serverURL + "/payment/nacos/" + id, String.class); }} 通过访问 http://localhost:83/consumer/payment/nacos/1,可以看到服务请求会自动切换到不同提供者的实例,说明 Nacos 已成功进行负载均衡。
转载地址:http://jhfk.baihongyu.com/