SpringCloud(4):服务消费方

简介: 搭建前言接着前面的几文章我们已经搭建好了注册中心和服务的生产者,这篇文章我们来搭建服务的消费方。SpringBoot版本:2.0 2.0.4.RELEASEspring-cloud-dependencies 版本:Finchley.

搭建前言

接着前面的几文章我们已经搭建好了注册中心和服务的生产者,这篇文章我们来搭建服务的消费方。
SpringBoot版本:2.0 2.0.4.RELEASE
spring-cloud-dependencies 版本:Finchley.SR1

pom:

 <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>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

配置文件

spring.application.name=eureka-consumer 
# Eureka  注册中心地址
eureka.client.service-url.defaultZone=http://localhost:10000/eureka/

management.endpoints.web.exposure.include=refresh,health,info,env,loggers,metrics,trace,dump
management.endpoint.health.show-details=always
# Ϊ11000  11001  11002 ...
server.port= 8080

启动类

@EnableFeignClients
@SpringBootApplication
@ComponentScan(value = "cn.lpck.eurekaconsumerfeign")
public class EurekaConsumerFeignApplication {

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

注解解释:
@EnableFeignClients:由于我们使用的试Feign 组件 ,我们需要在SpringBoot的启动类里面去开启Feign 组件的客户端,在启动时即注册。
@ComponentScan(value = "cn.lpck.eurekaconsumerfeign"): 组件扫描,识别feign组件

SpringCloud 发展至今提供了很多组件,我们去官方查看大概是有二十几个组件.使用Feign的好处就是他其实是封装了Http请求,简化了原本复杂的框架,实现了类似于Dubbo的@Refrence注解的作用,但是二者实现的原理却大不一样。

消费使用

到了这里我们其实就已经实现整个SpringCloud框架种最核心的SOA思想,搭建不同的生产者与消费者就可以实现业务拆分.

消费者的服务请求接口
/**
 * @Author: Liupu
 * @Date: 2018/9/12 0012 上午 11:46
 * @Description:
 * @Version 1.0
 */
@Component
@FeignClient(name = "eureka-producer")
public interface HelloService {
    @GetMapping("/hello/")
    String hello(@RequestParam(value= "name") String name);

   /* @RequestMapping("/hello/{user}")
    String getHello(@PathVariable("user") String user);*/

   @GetMapping("/hello/name")
    List<String> getNames(@RequestParam("name") String name);

}

下面贴上我们之前搭建好的生产者的Controller

/**
 * @Author: Liupu
 * @Date: 2018/9/11 0011 下午 4:52
 * @Description:
 * @Version 1.0
 */
@RestController
@RequestMapping("/hello")
public class HelloController {

    @Autowired
    private UserService userService;

    @GetMapping("/")
    public String getHello(@RequestParam String name){

        return "hello,"+ name +" "+ new Date();
    }

    /*@RequestMapping("/user")
    public String helloUser(@RequestParam String name){
        return "hello,"+ name +"aboyliupu"+ new Date();
    }*/

    @GetMapping("/name")
    public List<String> getList(@RequestParam String name){
        ArrayList<String> names = new ArrayList<>();
        names.add("aaa");
        names.add(name);
        return names;
    }
}

分析:消费者接口中的子父Mapping 与生产者中的子父Mapping一样,然后通过注解@FeignClient(name = "eureka-producer")指向我们的消费者中心找到整个消费者然后就请求接口中的数据.
如果抛开整个生产者和注册中心来看,这个项目就像是一个数据表现层,没有自己获取数据的能力,所有数据由第三方的接口提供。
然后再看整个项目 SOA的思想已经通过 生产者-----注册中心-----消费者 体现的淋漓尽致。我们学习分布式框架的目的也就是为了理解这样的一套架构思想。

最后再看下 消费者的Controller

/**
 * @Author: Liupu
 * @Date: 2018/9/12 0012 上午 11:44
 * @Description:feign 可以实现负载均衡 :@Value("${config.producer.instance:0}")
 *                          需要打包启动 类似注册中心集群
 * @Version 1.0
 */
@RestController
@RequestMapping("/hello")
public class HelloController {

    @Autowired
    HelloService helloService;

    @GetMapping("/{name}")
    public String index(@PathVariable("name") String name) {
        return helloService.hello(name + "!");
    }

    @GetMapping("/name/{name}")
    public List<String> getNames(@PathVariable("name") String name){
        List<String> names = helloService.getNames(name);
        return names;
    }
}

目录
相关文章
|
8月前
|
负载均衡 算法 Java
【SpringCloud(4)】OpenFeign客户端:OpenFeign服务绑定;调用服务接口;Feign和OpenFeign
Feign是一个WebService客户端。使用Feign能让编写WebService客户端更加简单。 它的使用方法是定义一个服务接口然后再上面添加注解。Feign也支持可拔插式的编码器和解码器。SpringCloud对Feign进行了封装,十七支持了SpringMVC标准注解和HttpMessageConverters。 Feign可用于Eureka和Ribbon组合使用以支持负载均衡
965 139
|
人工智能 Java Serverless
【MCP教程系列】搭建基于 Spring AI 的 SSE 模式 MCP 服务并自定义部署至阿里云百炼
本文详细介绍了如何基于Spring AI搭建支持SSE模式的MCP服务,并成功集成至阿里云百炼大模型平台。通过四个步骤实现从零到Agent的构建,包括项目创建、工具开发、服务测试与部署。文章还提供了具体代码示例和操作截图,帮助读者快速上手。最终,将自定义SSE MCP服务集成到百炼平台,完成智能体应用的创建与测试。适合希望了解SSE实时交互及大模型集成的开发者参考。
15328 60
|
10月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1458 3
|
8月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
存储 数据可视化 Java
基于MicrometerTracing门面和Zipkin实现集成springcloud2023的服务追踪
Sleuth将会停止维护,Sleuth最新版本也只支持springboot2。作为替代可以使用MicrometerTracing在微服务中作为服务追踪的工具。
907 2
|
11月前
|
Prometheus 监控 Cloud Native
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务实现步骤
932 0
|
人工智能 自然语言处理 Java
对话即服务:Spring Boot整合MCP让你的CRUD系统秒变AI助手
本文介绍了如何通过Model Context Protocol (MCP) 协议将传统Spring Boot服务改造为支持AI交互的智能系统。MCP作为“万能适配器”,让AI以统一方式与多种服务和数据源交互,降低开发复杂度。文章以图书管理服务为例,详细说明了引入依赖、配置MCP服务器、改造服务方法(注解方式或函数Bean方式)及接口测试的全流程。最终实现用户通过自然语言查询数据库的功能,展示了MCP在简化AI集成、提升系统易用性方面的价值。未来,“对话即服务”有望成为主流开发范式。
9994 7
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?

热门文章

最新文章