草庐IT

nacos整合openfeign

c7d122ec46c0 2023-03-28 原文

公司一直使用的都是dubbo,很少使用springcloud,自学下

安装nacos

nacos即是配置中心也是注册中心,安装参考nacas大致如下

  1. 修改conf/application.properties文件,nacos支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。不知道怎么安装mysql参考安装mysql
  2. sh startup.sh -m standalone 启动

1.构建provider

整体是比较简单的,大家照着下面的配置直接贴代码就行。注意x替换为自己的ip或者包名

pom.xml

  <properties>
        <java.version>1.8</java.version>
        <jackson.version>2.12.4</jackson.version>
        <project.version>1.0.0</project.version>
        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
        <maven-source.version>3.2.1</maven-source.version>
        <lombok.version>1.18.12</lombok.version>
        <spring.boot.version>2.3.2.RELEASE</spring.boot.version>
        <spring.cloud.version>Hoxton.SR9</spring.cloud.version>
        <spring.cloud.alibaba.version>2.2.6.RELEASE</spring.cloud.alibaba.version>
    </properties>

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>${spring.boot.version}</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

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

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

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>
  <!-- 一般只要在项目的root下的pom.xml中加上上面那些配置 而只需要保留下面的-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

启动类

@SpringBootApplication
/**这个注解非常重要**/
@EnableDiscoveryClient
public class ProviderApplication {

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

    @RestController
    public class EchoController {
        @GetMapping(value = "/echo/{string}")
        public String echo(@PathVariable String string) {
            return "Hello Nacos Discovery " + string;
        }
    }
}

application.properties

server.port=8082
spring.application.name=demo-provider
server.servlet.context-path:/provider
spring.cloud.nacos.discovery.server-addr=你的nacosIp地址:8848
management.endpoints.web.exposure.include=*

2.构建consumer的配置

启动类配置

@SpringBootApplication
@MapperScan("com.xxx.demo.dao.mapper")
@ComponentScan(basePackages = {"com.xxx.demo"})
@RestController
@Slf4j
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.xxx.demo.service.feign"})
public class DemoApplication {

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

上图中@EnableDiscoveryClient @EnableFeignClients 这两个注解注意

申明feign的调用

注意这边的要跟provider写的一摸一样,当人也可以把provider的抽象出来提取为api接口,在消费者这边继承。

@FeignClient(name = "demo-provider", path = "/provider")
public interface ProviderClient {

    @GetMapping("/echo/{string}")
    String hello(@PathVariable String string);
}

pom的配置

与consumer一样

服务端controller

能够调用成功

public class FeignController {
    @Resource
    private ProviderClient providerClient;

    /**
     *  openfeign示例
     * @param string 请求入参
     * @return 返回参数
     */
    @RequestMapping(value = "/consumer/{string}",method = RequestMethod.GET)
    public String consume(@PathVariable String string){
        return providerClient.hello(string);
    }

}

消费者application.properties

# 新增如下配置 替换为自己的nacos地址
spring.cloud.nacos.discovery.server-addr=x.x.x.x:8848
management.endpoints.web.exposure.include=*

3.整个项目结构

image.png

4.参考

1.springcloud-alibaba
2.Spring Boot 整合 OpenFeign + Nacos 的坑

有关nacos整合openfeign的更多相关文章

  1. ruby - 如何将 Interactive Ruby 整合到我的开发过程中? - 2

    我正在尝试找到一种更好的方法将IRB与我的常规ruby​​开发集成。目前我很少在我的代码中使用IRB。我只用它来验证语法或尝试一些小的东西。我知道我可以将我自己的代码加载到ruby​​中作为一个require'mycode'但这通常不符合我的编程风格。有时我要检查的变量超出范围或在循环内。有没有一种简单的方法可以启动我的脚本并在IRB内的某个点卡住?我想我正在寻找一种更简单的方法来调试我的ruby​​代码而不破坏我的F5(编译)键。也许有经验的ruby开发者可以和我分享一个更精简的开发方法。 最佳答案 安装ruby​​-debugg

  2. ruby - 使用 Drupal 和 Ruby。有没有人整合两者? - 2

    我开始了一个小型网络项目并使用Drupal来构建它。到目前为止,还不错:您可以快速建立一个不错的面向CMS的网站,通过模块添加社交功能,并且您有一个广泛的API可以在一个架构良好的平台中进行自定义。现在问题来了:网站的增长超出了最初的计划,我发现自己正处于认真开始为它编写代码的境地。由于Drupal项目,我对PHP有了新的认识,但我想用Ruby来做。我会感觉更舒服,以后维护起来更容易,我可以在其他Ruby/Rails应用程序中重用它。随着时间的推移,我想我会用Ruby重写Drupal中的现有部分。基于此,问题是:是否有人将两者(成功或失败的故事)结合起来?这是一个相当大的决定,但我在G

  3. 若依框架解读(微服务版)——2.模块间的调用逻辑(ruoyi-api模块)(OpenFeign)(@innerAuth) - 2

    模块之间的关系我们可以了解到一共有这么多服务,我们先启动这三个服务其中rouyi–api模块是远程调用也就是提取出来的openfeign的接口ruoyi–commom是通用工具模块其他几个都是独立的服务ruoyi-api模块api模块当中有几个提取出来的OpenFeign的接口分别为文件,日志,用户服务我们以RemoteUserService接口为例子:其中contextId="remoteUserService"为bean的名称,value=ServiceNameConstants.SYSTEM_SERVICE为接口的描述,fallbackFactory=RemoteUserFallback

  4. 优化大数据量查询方案——SpringBoot(Cloud)整合ES - 2

    一、Elasticsearch简介实际业务场景中,多端的查询功能都有很大的优化空间。常见的处理方式有:建索引、建物化视图简化查询逻辑、DB层之上建立缓存、分页…然而随着业务数据量的不断增多,总有那么一张表或一个业务,是无法通过常规的处理方式来缩短查询时间的。在查询功能优化上,作为开发人员应该站在公司的角度,本着优化客户体验的目的去寻找解决方案。本人有幸做过Tomcat整合solr,今天一起研究一下当前比较火热的Elasticsearch搜索引擎。Elasticsearch是一个非常强大的搜索引擎。它目前被广泛地使用于各个IT公司。Elasticsearch是由Elastic公司创建。它的代码位

  5. 本地nacos启动失败,org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean ** - 2

    总结:nacos-2.x.x要使用mysql5.7.x项目使用若依3.1.0-cloud版本,因此要使用nacos-2.x.x的版本,下载并安装nacos后,配置application.properties里的ConfigModuleRelatedConfigurations模块,#***************ConfigModuleRelatedConfigurations***************####IfuseMySQLasdatasource: spring.datasource.platform=mysql###CountofDB: db.num=1###ConnectURL

  6. Zookeeper、Nacos、Dubbo、Kafka之间的关系 - 2

    1.Zookeeper  Zookeeper是 ApacheHadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高。  Zookeeper的功能主要是它的树形节点来实现的。当有数据变化的时候或者节点过期的时候,会通过事件触发通知对应的客户端数据变化了,然后客户端再请求zookeeper获取最新数据,采用push-pull来做数据更新。服务注册和消费信息直接存储在zk树形节点上,集群下采用过半机制保证服务节点间一致性。 2.Nacos  Nacos是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理。Nacos是Dub

  7. 搭建nacos环境(保姆级教程) - 2

    2.2.1服务发现中心根据上节讲解的网关的架构图,要使用网关首先搭建Nacos。首先搭建Nacos服务发现中心。在搭建Nacos服务发现中心之前需要搞清楚两个概念:namespace和groupnamespace:用于区分环境、比如:开发环境、测试环境、生产环境。group:用于区分项目,比如:xuecheng-plus项目、xuecheng2.0项目首先在nacos配置namespace:登录Centos,启动Naocs,使用sh/data/soft/restart.sh将自动启动Nacos。访问:http://192.168.101.65:8848/nacos/账号密码:nacos/nac

  8. 若依整合Easy-Es实现文章列表分页查询 - 2

    Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架,在RestHighLevelClient的基础上,只做增强不做改变,为简化开发、提高效率而生,您如果有用过Mybatis-Plus(简称MP),那么您基本可以零学习成本直接上手EE,EE是MP的Es平替版,在有些方面甚至比MP更简单,同时也融入了更多Es独有的功能,助力您快速实现各种场景的开发。目录1、ES的优点2、整合过程(1)配置文件(2

  9. springboot2.6.4整合elasticsearch7.15.2 - 2

    之前跟着老师的视频安装了一个es6.4.3,视频里说“6->7类型逐渐被废弃,版本变化较大,与springboot不兼容,建议安装6.4.3与内部一致”,我就很天真的跟着一块装了,结果可想而知……我的springboot版本是2.6.4啊,怎么可能不报错呢??!还是要多看官方文件!整合最重要的就是这张图,版本对了什么都好说es对应的springboot版本SpringDataReleaseTrainSpringDataElasticsearchElasticsearchSpringFrameworkSpringBoot2021.2(Raj)4.4.x7.17.45.3.x2.7.x2021.1

  10. Alibaba Nacos JWT令牌使用默认密钥浅析 - 2

    简介Nacos/nɑ:kəʊs/是DynamicNamingandConfigurationService的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。一、漏洞原理Nacos服务管理平台因默认密钥导致的认证绕过漏洞。在默认配置为未修改的情况下,攻击者可以构造用户token进入后台,导致系统被攻击与控制。许多Nacos用户只开启了鉴权,但没有修改默认密钥,导致Nacos系统仍存在被入侵的风险。V1.4.2V2.2.0大致讲一下相关的内容:1、Nacos鉴权原理Nacos支持基于

随机推荐