服务注册
上一节搭建nacos环境。这一节主要是本地搭建两个服务。然后注册到nacos中,并且相互调用。使用nacos单机版
| 服务 | 端口 | 应用名 |
|---|---|---|
| 服务提供者 | 9001 | nacos-provider |
| 服务消费者 | 9101 | nacos-consumer |
应用一:nacos-provider
第1步
新建maven项目,引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
第2步
增加注解:@EnableDiscoveryClient
@EnableDiscoveryClient
@SpringBootApplication
public class NacosProvider9001Application {
public static void main(String[] args) {
SpringApplication.run(NacosProvider9001Application.class, args);
}
}
第3步
增加配置文件
server:
port: 9001
spring:
application:
name: nacos-provider
cloud:
discovery:
server-addr: 127.0.0.1:8848
management:
endpoint:
web:
exposure:
include:'*'
第4步
创建接口,等待被调用
@RestController
public class UserController {
@GetMapping("/hello")
public String hello(HttpServletRequest request){
System.out.println(".......Nacos Provider run......."+request.getHeader("X-Request-red"));
System.out.println(request.getParameter("red"));
return "hello boge ...9001";
}
}
应用二:nacos-consumer
第1步
新建maven项目,引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
第2步
增加注解:@EnableDiscoveryClient
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConsumer9101Application {
public static void main(String[] args) {
SpringApplication.run(NacosConsumer9101Application.class, args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
第3步
增加配置文件
server:
port: 9101
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
management:
endpoint:
web:
exposure:
include:'*'
service-url:
nacos-user-service: http://nacos-provider
第4步
调用服务
@RestController
public class UserController {
@Value("${service-url.nacos-user-service}")
private String serverURL;
@Autowired
private RestTemplate restTemplate;
@GetMapping("/helloConsumer")
public String helloProvider(){
System.out.println("------消费者接口执行了-----");
// 通过RestTemplate 实现 服务的发现和调用
return restTemplate.getForObject(serverURL+"/hello",String.class);
}
}