SpringCloud Alibaba Nacos 服务发现 RestTemplate进行消费

JAVA学习网 2020-09-03 10:53:05
发现服务进行RestTemplate调用
  1. 启动Nacos访问地址为:http://101.200.201.195:8848/nacos/
  2. 启动buscien-service-01业务服务,进行消费

准备工作完成后进行服务消费。

**第一步:**创建一个Maven工程buscien-service-02

**第二步:**编辑pom.xml,加入必要的依赖配置

<!-- 导入bom依赖管理工程 -->
<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.opensource</groupId>
                <artifactId>bom</artifactId>
                <version>${opensource.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>

<!-- 业务服务所需依赖 -->
 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
</dependencies>

在bom工程中已经全部定义好了对应的版本所以我们在业务工程中就不需要定义依赖版本了,统一在bom中进行维护。

**第三步:**创建一个SpringBoot启动类,并且增加一个Http服务

/**
 * SpringCloud Alibaba服务发现
 *
 * @author WuWenTao
 * @version 1.0
 * @date 2020/9/2 11:38
 */
@EnableDiscoveryClient
@SpringBootApplication
@Configuration
public class BuscienService02Appl {
    public static void main(String[] args) {
        SpringApplication.run(BuscienService02Appl.class, args);
    }

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

@RestController
@RequestMapping("/buscien2/")
class ConsumerController {

    private static final Logger log = LoggerFactory.getLogger(ConsumerController.class);

    @Autowired
    RestTemplate restTemplate;

    @Autowired
    LoadBalancerClient loadBalancerClient;

    @GetMapping("consumer")
    public String consumer(@RequestParam String name) {
        // 通过的负载均衡接口获取服务实例信息
        ServiceInstance serviceInstance = loadBalancerClient.choose("buscien-service-01-app");
        String url = "http://" + serviceInstance.getServiceId() + ":" + serviceInstance.getPort() + "/buscien1/sayHello?name=" + name;
        log.info(url);
        String result = restTemplate.getForObject(url, String.class);
        return result;
    }
}

以上内容很清晰,在启动类中注入一个RestTemplate并且提供负载均衡的模板,在ConsumerController类中使用

LoadBalancerClient通过应用名称获取对应的服务实例信息,并且通过RestTemplate远程调用服务进行消费。

**第四步:**编写application.properties

server.port=2000
spring.application.name=buscien-service-02-app
spring.cloud.nacos.discovery.server-addr=101.200.201.195:8848

**第五步:**启动BuscienService02Appl,启动完成,在Nacos界面中能够看到注册上去的服务,访问BuscienService02Appl中的服务接口:

http://localhost:2000/buscien2/consumer?name=ServiceConsumer

请求成功后返回:

hello ServiceConsumer

源码地址:https://github.com/450255266/spring-cloud-alibaba

Nacos地址对外开放:http://101.200.201.195:8848/nacos/

阅读(774) 评论(0)