微服务架构实战学习(六):实现服务间调用(RestTemplate方式)

关注微信公众号,查看私密内容

 

介绍了注册中心的搭建和服务的注册,本文将介绍下服务消费者调用服务提供者的过程。

 一、服务调用流程

总体流程是首先启动注册中心,服务提供者提供服务并注册到注册中心,消费者从注册中心中获取服务并执行。

实现服务调用需要有三个角色:服务注册中心、服务提供者和服务消费者,其中服务注册中心和服务提供者上一篇文章已经实现了,下面会详细演示下服务消费者搭建并调用服务的过程。

二、服务提供者

如何搭建一个服务提供者,请参考之前的博文,使用SpringBoot创建工程,引入Eureka -client的依赖。并在启动类使用注解@EnableEurekaClient,启动时将该服务注册到注册中心。

添加一个controller,UserController.java代码如下:

/**
 * 用户服务
 */
@Slf4j
@RestController
@RequestMapping("/provider")
public class UserController {

    static Map<Integer, User> userMap = new HashMap<>();

    static {
        //模拟数据库
        User user1 = new User(1, "张三", "123456");
        userMap.put(1, user1);
        User user2 = new User(2, "李四", "123123");
        userMap.put(2, user2);
    }

    /**
     * 根据id 查询
     */
    @RequestMapping("/getUser")
    public String getUser(Integer id) {
        User user = userMap.get(id);
        return JSON.toJSONString(user);
    }

}

三、服务消费者

 

首先新建一个SpringBoot项目,命名spring-cloud-user-consumer,然后按照下面步骤编写代码即可。

  1. pom.xml代码

添加eureka-client的依赖,代码如下:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.RELEASE</version><!-- eureka版本 -->
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

启动类代码:

启动类添加注解@EnableDiscoveryClient,添加该注解后,项目就具有了服务注册的功能,代码如下:

@EnableDiscoveryClient
@SpringBootApplication
public class SpringCloudUserConsumerApplication {

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

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudUserConsumerApplication.class, args);
    }

}

Controller代码
添加一个Controller,用于调用服务提供者。

/**
 * 消费者Controller
 */
@Slf4j
@RestController
@RequestMapping("/consumer")
public class RibbonConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private LoadBalancerClient loadBalancerClient;

    /**
     * 调用 user微服务
     */
    @GetMapping("getUser")
    public String getUser(Integer id) {
        String url = "http://user-service/provider/getUser?id=" + id;
        return restTemplate.getForObject(url, String.class);
    }
}

 

配置中心:

使用yml的配置文件,application.yml配置如下:

server:
  port: 8082 #服务端口
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:9001/eureka/
spring:
  application:
    name: user-service-consumer

四、服务调用实战

  1. 启动服务中心并注册服务

代码编写之后,按顺序启动spring-cloud-eureka、spring-cloud-user-service和spring-cloud-user-consumer,先访问注册中心http://localhost:9001/,出现下图说明注册中心和两个服务以及注册成功。


注册中心运行截图

  1. 服务调用

打开postman访问http://localhost:8082/consumer/getUser?id=2,出现下图后说明服务已经调用成功。


postman调用截图

关注微信公众号查看私密内容

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李晓LOVE向阳

你的鼓励是我持续的不断动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值