首页 > 其他分享 >OpenFeign 服务调用与负载

OpenFeign 服务调用与负载

时间:2024-07-14 16:07:48浏览次数:11  
标签:负载 调用 OpenFeign spring nacos class test public cloud

需要建两个工程,一个是服务提供者,一个是服务调用者

服务提供者

一个普通的 nacos 服务,增加一个 controller 方法即可,上一篇文章刚说了,这里简单说下

<!-- 服务提供者不调用其他服务,所以只需要注册到 nacos 的依赖 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置文件

server:
  port: 8081

spring:
  application:
    name: my-provider-test
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # Nacos服务注册中心地址

代码

// 启动类
@EnableDiscoveryClient
@SpringBootApplication
public class SpringbootApplication {
   public static void main(String[] args) {
           SpringApplication.run(SpringbootApplication.class,args);
       }

}

// controller
@RestController
public class TestController {

    @GetMapping("/test")
    public String testGetConfig(){
        return "test";
    }
}

服务消费者

pom 依赖

<!-- 服务调用,底层需要 loadbalancer 做负载 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

<!-- 服务注册 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置文件

server:
  port: 8082

spring:
  application:
    name: my-consumer-test
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # Nacos服务注册中心地址

代码

// 一个 Feign 接口,value 是服务名称
@FeignClient(value = "my-provider-test")
public interface TestFeign {

    // 这个方法要和服务提供者那里保持一致
    @GetMapping("/test")
    String test();

}

// controller
@RestController
public class Controller {

    @Resource
    private TestFeign testFeign;

    @GetMapping("/test")
    public String testFeign(){
        return testFeign.test();
    }

}

// 启动类
@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients // 开启 Feign
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

启动服务,nacos 能看到这俩服务

调用接口测试

生产中一般不会不是这样,通常服务提供者也是消费者,一般 controlle 继承 Feign 接口,@RequestMapping、@RequestBody 等这些注解也能继承,所以 Feign 中既定义了 Feign 也定义了接口,如果接入 swagger,swagger 以 controller 来构建 dock,这样代码就会清爽很多

标签:负载,调用,OpenFeign,spring,nacos,class,test,public,cloud
From: https://www.cnblogs.com/cryus/p/18297225

相关文章

  • vue子组件调用父组件方法
    父组件页面<popoverssref="pop":goodspop="goodspop"></popoverss>子组件 components:{"popoverss":()=>import('../comm/popover.vue')},方法goodspop(e){console.log(e+"----")......
  • 调用大模型API帮我分析并写可执行代码
    本文以博主自己的一个具体任务为例,记录调用大模型来辅助设计奖励函数的过程。注1:博主的目标是在强化学习过程中(CARLA环境十字路口进行自动驾驶决策控制),通过调用大模型API进行奖励函数设计,进而生成可执行的奖励函数代码,并完成自动调用。以大模型具备的丰富知识,辅助进行奖励设计......
  • 织梦dedecms文章列表标签无法调用副栏目文章的解决办法
    问题分析:最近,发现dedecms中的文章在选择幅栏目后,在其对应的幅栏目列表页中可以显示该文章,但在全局的arclist标签中却无法显示该文章,于是在网上找了很多解决办法,解决思路都是一样,但写法却写错了,导致arclist标签在使用了flag属性时会失效的问题。解决方法如下:打开/include/tagli......
  • 函数调用栈
    1、程序源代码:[xuanmiao@localhostPractice]$catmain.c#include<stdio.h>intplus(inta,intb){intc=a+b;returnc;}intmain(){inta=1,b=2;intc=0;c=plus(a,b);return0;}2、编译[xuanmiao@localhostPractice......
  • 0基础学python-10:函数的定义,调用以及参数
    目录前言1.函数的定义2.函数的调用3.函数的参数<1>必选参数<2 >默认参数<3> 可变参数<4>关键字参数 <5> 命名关键字参数 4.注意事项前言        函数是一段完成特定任务的代码块,可以通过定义、调用和传递参数来实现代码的模块化和......
  • 万能可调用对象绑定器CPBind
    背景作为一个C++程序员,经常喜欢写一些代码小工具,有一天写代码用到了std::bind,需要和std::function配合使用,并且需要传递的参数类型也已经固定,所以我就想能不能写一个类让它可以接受任意类型的可调用对象(C函数,成员函数,静态函数,lambda表达式,重载operator()的类对象等),所以写出......
  • ssycms 常用的文章列表调用代码
    常用的文章列表调用代码最新文章{tag:articleid="val"cid='$itemInfo["cid"]'limit='10'}<ahref="{$val.url}"class="item-link"title="{$val.title}">{$val.title}</a>{/tag:article}热门文......
  • ssycms常用分类列表页面的调用标签
    分类模板页常用分类列表页面的调用标签你也可以将本篇内容复制到分类模板页中查看分类模板路径template\default\html\article\article.html分类名称:{$itemInfo['title']}分类别名:{$itemInfo['url_name']} 分类URL:{$itemInfo['url']} 分类关键词:{$itemInfo['keywords']}......
  • ssycms不常用的文章列表调用代码
    不常用的文章列表调用代码调用指定关键词文章列表{tag:articleid="val"keywords="seo,优化"limit='10'}<ahref="{$val.url}"class="item-link"title="{$val.title}">{$val.title}</a>{/tag:article}调用指定ID文章列表......
  • Nginx与负载均衡不得不说的秘密
    Nginx是一款高性能的HTTP和反向代理服务器,它以事件驱动和异步非阻塞的方式运行,能够处理数以万计的并发连接,并且占用的内存资源相对较少。Nginx也常用于负载均衡、缓存、静态文件服务等场景。Nginx的特点:高并发:Nginx能够支持数以万计的并发连接,适合高流量网站。低内存占......