简单上手springcloud,eureka加fengin实现服务调用

一、搭建eureka服务端

ide
idea智能创建eureka客户端和服务端
我们创建的是单机版的服务端配置文件如下

server:
  port: 8761
eureka:
  server:
    enable-self-preservation: false
  instance:
    hostname: localhost
  client:
    #声明自己是服务端
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

在springboot的启动类上面加上@EnableEurekaServer注解

启动服务,在浏览器输入http://localhost:8761/,即可看见注册中心的页面

二、搭建eureka客户端

新建一个eureka客户端的项目,并且在服务端注册,完成之后,即可在注册中心的页面看见多了一个服务

配置文件

server:
  port: 8772


#指定注册中心地址
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

#服务的名称
spring:
application:
name: product-servic
表名向8761这个端口的服务注册
在springboot的启动类上面加上@EnableEurekaClientr注解,表名是客户端
然后和springmvc的玩法一样,写三层架构

接口

public interface ProductService {
    List<Product> listProduct();

    Product findById(long id);

}

实现类

public class ProductServiceImpl implements ProductService {

    private static final Map<Long, Product> daoMap = new HashMap<Long, Product>();
    static {
        Product p1 = new Product(1, "iphonex", 9999);
        Product p2 = new Product(2, "xiaomi", 7777);
        daoMap.put(p1.getId(),p1);
        daoMap.put(p2.getId(),p2);
    }


    @Override
    public List<Product> listProduct() {

        Collection<Product> collection = daoMap.values();
        List<Product> list = new ArrayList<>(collection);

        return list;
    }

    @Override
    public Product findById(long id) {
        Product product = daoMap.get(id);
        return product;
    }
}

controller,这里注意/api/product/find,后面的feign调用会用到

@RestController
@RequestMapping("/api/product/")
public class ProductController {
    @Autowired
    private ProductService productService;
    @RequestMapping("list")
    public Object list(){
        return productService.listProduct();
    }

    @RequestMapping("find")
    public Object findById(@RequestParam("id") int id){
        return productService.findById(id);
    }

}

浏览器输入
http://localhost:8772/api/product/find?id=1
然后就可以在之前注册中心页面看到多了一个服务
在这里插入图片描述

三、通过feign实现对eureka客户端的调用

在这里插入图片描述
同样idea智能创建feign客户端项目
在springboot启动类加上
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
注解
配置文件

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8765
spring:
  application:
    name: service-feign

同样表示往注册中心注册该服务

@FeignClient(value = "product-servic")
public interface SchedualServiceHi {
    @RequestMapping(value = "/api/product/find",method = RequestMethod.GET)
    String sayHiFromClientOne(@RequestParam(value = "id") long id);
}

这里的product-servic和前面erueka客户端的服务名一致
/api/product/find
@RequestParam(value = “id”) long id
这个路径和参数也要和前面erueka客户端的一致

这个服务的端口是8765
浏览器输入
http://localhost:8765/api/product/find?id=2
我们可以看到内容和
http://localhost:8772/api/product/find?id=2
这个页面的内容是一样的
说明feign成功调用了erueka客户端的服务

再看看注册中心的页面发现也多了一个服务
在这里插入图片描述

四、总结、收

一次简单的微服务调用就这样完成了,真实的项目肯定还要做一些权限的配置。
自己按照步骤操作的时候肯定会遇到各种配置问题,利用搜索引擎解决就好了。
我贴两个自己遇到的坑
当时项目无法启动加了这个些配置就好了

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <!--跳过项目运行测试用例-->
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>

feign项目缺少这两个配置,导致我卡了半天

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

个人也是第一次写springcloud的demo,第一次写博客

要是觉得有帮助,欢迎给个赞鼓励鼓励呗~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值