SpringBoot集成Nacos实现服务注册和远程调用
1、启动Nacos
首先,需要启动Nacos,这里不做过多介绍。
2、注册服务提供方
创建一个空白的SpringBoot项目,对应项目中加入SpringBoot-Nacos依赖,pom如下所示。
<dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-discovery-spring-boot-starter</artifactId> <version>0.2.7</version> </dependency>
application配置文件配置Nacos服务的地址,如代码清单所示。
server.port=8081 spring.application.name=demo-provider nacos.discovery.server-addr=127.0.0.1:8848
在启动类加入@EnableNacosDiscovery注解,完整启动类代码如下所示。
@SpringBootApplication @EnableNacosDiscovery public class DemoProviderApplication { public static void main(String[] args) { SpringApplication.run(DemoProviderApplication .class, args); } }
新建RegisterNacos使用Naming服务注册实例到注册中心。
import com.alibaba.nacos.api.annotation.NacosInjected; import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.api.naming.NamingService; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; /** * @author D * @Description: Nacos服务注册中心 * @date 2021/4/12 */ @Component public class RegisterNacos { @NacosInjected private NamingService namingService; @Value("${server.port}") private int serverPort; @Value("${spring.application.name}") private String applicationName; /** * 注册服务 * * @throws NacosException */ @PostConstruct public void registerInstance() throws NacosException { namingService.registerInstance(applicationName, "127.0.0.1", serverPort); } }
启动项目后,咱们可以在Nacos服务列表中查看到当前已注册的项目。
3、注册服务消费方
创建一个空白的SpringBoot项目,这次对应项目中加入SpringCloud-Nacos和OpenFeign依赖,pom如下所示。
<!--服务注册--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.0.0.RELEASE</version> </dependency> <!--服务调用--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.0.0.RELEASE</version> </dependency>
application配置文件配置Nacos服务的地址,如代码清单所示。
server.port=8082 spring.application.name=demo-consumer spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
在启动类加入@EnableNacosDiscovery和@EnableFeignClients注解,完整启动类代码如下所示。
@SpringBootApplication @EnableNacosDiscovery @EnableFeignClients public class DemoConsumerApplication { public static void main(String[] args) { SpringApplication.run(DemoConsumerApplication .class, args); } }
新建ProviderFeignClient接口,完整代码如下所示。
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; /** * @author D * @Description:demo-provider * @date 2021/4/12 */ @FeignClient("demo-provider") public interface ProviderFeignClient { @RequestMapping("/index") String index(); }
新建消费者Controller进行FeignClient远程调用服务方接口,完整代码如下所示。
@RestController public class ConsumerController { @Autowired ProviderFeignClient providerFeignClient; @RequestMapping("/customer") public String hello() { return providerFeignClient.index(); } }
启动项目后,当控制台输出该条日志后即当前服务已成功注册上Nacos。 此时咱们可以使用PostMan消费方所暴露的接口http://127.0.0.1:8082/customer进行远程调用服务提供方接口。