三、Eureka注册与发现之Eureka Comsumer

3 篇文章 0 订阅
2 篇文章 0 订阅

SpringCloud系列目录:


  续上片博文,如果在一篇博文中写完Eureka所有的内容,篇幅会过长,这样比较容易漏掉某项配置。还望各位大佬见谅

  上篇博文说道,我们目前已经有了商场和商户,目前还缺少一个用户,用户需要通过商场找到商户,并从商户中获取到服务。那接下来我们就新增80用户服务

在这里插入图片描述

一、构建项目

先看下module的结构,其中的config可以先不用关注,这个是后续提到的负载均衡的方式
在这里插入图片描述

1) 修改pom.xml

<dependencies>

        <!--引入Eureka client端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--自定义的服务组件-->
        <dependency>
            <groupId>com.gaowz</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

2)配置application.yml

server:
  port: 80

Spring:
  application:
    #微服务名称 此处的名称即为注册发现中心的名称
    name: cloud-consumer-order
    
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka

3)主启动类


@EnableEurekaClient
@SpringBootApplication
public class OrderMain80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderMain80.class,args);
    }
}

4)业务代码

package com.gao.controller;

import com.gao.domain.CommonResult;
import com.gao.domain.Payment;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

/**
 * @program: tx_springcloud_02
 * @description: 订单的控制层
 * @author: gaowz
 * @create: 2020-11-16 14:40
 **/
@RestController
@RequestMapping("/order")
public class OrderController {
    
    //集群环境下只写服务名称
    public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";


    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/consumer/payment/create")
    public CommonResult<Payment> create(Payment payment) {
        return restTemplate.postForObject(PAYMENT_URL + "/payment/create", payment, CommonResult.class);  //写操作
    }

    @GetMapping("/consumer/payment/get/{id}")
    public CommonResult<Payment> getPayment(@PathVariable("id") Long id) {
        return restTemplate.getForObject(PAYMENT_URL + "/payment/get/" + id, CommonResult.class);
    }

    /**
     * 使用的是getforentity
     * @param id
     * @return
     */
    @GetMapping("/consumer/payment/getEntity/{id}")
    public CommonResult<Payment> getPayment2(@PathVariable("id") Long id) {

        ResponseEntity<CommonResult> entity = restTemplate.getForEntity(PAYMENT_URL + "/payment/get/" + id, CommonResult.class);
        if (entity.getStatusCode().is2xxSuccessful()){
            return entity.getBody();
        }else{
            return new CommonResult<>(444,"操作失败");
        }
    }
}

5)测试

  • 首先8001服务先自测看是否有问题,发现是OK的~
    在这里插入图片描述
  • 然后再通过80服务调用8001服务是否依然是OK的,此处远程调用的方式是restTemplate的方式
    在这里插入图片描述

此处我们发现即是通过80客户端是可以访问到对应的服务的
在这里插入图片描述
到这里单体的注册发现,以及服务调用就已经结束了。但是不知道大家有没有发现,到目前为止,我们的Server Provider和 Eureka Server都是都是只有一台。这样的架构行不行呢,说实话其实是没有问题的,但是万一哪天Provdier或者是Eureka Server掉线了,那我们的80客户端还能访问吗?答案是不可以的。

使用集群可以很好的解决上述问题

  欢迎各位优秀的工程师批评指正~

源码地址Git

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值