最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud服務(wù)實現(xiàn)同時使用eureka和nacos方法

 更新時間:2023年01月11日 09:45:17   作者:李奈 - Leemon  
這篇文章主要介紹了SpringCloud服務(wù)實現(xiàn)同時使用eureka和nacos方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧

一,背景

之所以會想到一個服務(wù)同時使用eureka和nacos,是因為遇到一個需求,配置數(shù)據(jù)是存儲在nacos的配置中,然后使用該配置的服務(wù)卻是在一個eureka環(huán)境中。所以此時就需要一個代理服務(wù),它既能夠從nacos的config中獲取配置數(shù)據(jù),又是注冊到eureka注冊中心中。

二,代理服務(wù)創(chuàng)建和配置

2.1 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>lmc-tools</artifactId>
        <groupId>com.lmc</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>tools-2-eureka-nacos</artifactId>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.lmc</groupId>
            <artifactId>tools-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>com.alibaba.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
<!--            <version>2021.1</version>-->
<!--        </dependency>-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2021.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

注意,關(guān)于nacos,在該服務(wù)中不能引入spring-cloud-starter-alibaba-nacos-discovery依賴,只需要引入spring-cloud-starter-alibaba-nacos-config

2.2 bootstrap.yml

server:
  port: 9006
  servlet:
    context-path: /eureka-proxy

spring:
  application:
    name: tools-eureka-proxy
  profiles:
    active: dev
management:
  endpoints:
    web:
      exposure:
        include: "*"

bootstrap-dev.yml

spring:
  cloud:
    nacos:
      server-addr: localhost:9000
      config:
        namespace: 8628e5dd-a236-4016-b94f-565a001faf2f
        file-extension: yaml  # 配置內(nèi)容的數(shù)據(jù)格式
        extension-configs[0]:
          data-id: ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
          group: dev
          refresh: true

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka
    registry-fetch-interval-seconds: 10
  instance:
    instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port} # 實例名:application:ip:port
    prefer-ip-address: true # 優(yōu)先使用IP地址作為主機名的標識
    lease-renewal-interval-in-seconds: 180 # 續(xù)約更新時間間隔
    lease-expiration-duration-in-seconds: 200

2.3 Application.java

package per.lmc.tools2.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
 * @Description: TODO
 * @version: 1.0
 */
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaProxyApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaProxyApplication.class, args);
    }
}

2.4 創(chuàng)建接口

2.4.1 ApiMessageController.java

package per.lmc.tools2.eureka.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import per.lmc.tools2.eureka.config.MyNacosProperties;
import com.lmc.common.enums.LanguageEnum;
import com.lmc.common.enums.SplitEnum;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * @Description: TODO API返回參數(shù)接口
 * @version: 1.0
 */
@RestController
@RequestMapping("/apiMessages")
public class ApiMessageController {
    @Autowired
    private MyNacosProperties myNacosProperties;
    /**
     * 獲取所有apiMessages
     * @param language 語言
     * @return 數(shù)據(jù)集合
     */
    @GetMapping("/getAll")
    public Map<String, String> apiMessages(String language) {
        List<String> apiMessages = myNacosProperties.getApiMessages();
        Map<String, String> result = new HashMap<>(20);
        if (!CollectionUtils.isEmpty(apiMessages)) {
            if (LanguageEnum.English.value().equalsIgnoreCase(language)) {
                apiMessages.forEach(a -> result.put(a.split(SplitEnum.API_MESSAGE_SPLIT.value())[0], a.split(SplitEnum.API_MESSAGE_SPLIT.value())[2]));
            }else {
                apiMessages.forEach(a -> result.put(a.split(SplitEnum.API_MESSAGE_SPLIT.value())[0], a.split(SplitEnum.API_MESSAGE_SPLIT.value())[1]));
            }
        }
        return result;
    }
    /**
     * 通過code獲取APIMessage
     * @param language 語言
     * @param code 參數(shù)代碼
     * @return 參數(shù)代碼指定信息
     */
    @GetMapping("/getOne")
    public String getMessage(String language, String code) {
        // 獲取指定code的記錄
        List<String> apiMessages = myNacosProperties.getApiMessages().stream().filter(a -> a.startsWith(code)).collect(Collectors.toList());
        if (CollectionUtils.isEmpty(apiMessages)) {
            return String.format("不存在code為%s的記錄", code);
        }
        if (LanguageEnum.English.value().equalsIgnoreCase(language)) {
            return apiMessages.get(0).split(SplitEnum.API_MESSAGE_SPLIT.value())[2];
        }else {
            return apiMessages.get(0).split(SplitEnum.API_MESSAGE_SPLIT.value())[1];
        }
    }
}

2.4.2 MyNacosProperties.java

package per.lmc.tools2.eureka.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
import java.util.List;
/**
 * @Description: TODO Nacos配置映射類
 * @version: 1.0
 */
@Configuration
@ConfigurationProperties(prefix = "tools")
@RefreshScope
@Data
public class MyNacosProperties {
    List<String> apiMessages;
}

在nacos中的配置如下所示:

2.5 運行測試

運行服務(wù),訪問 http://localhost:9006/eureka-proxy/apiMessages/getAll?language=en,能成功獲取到數(shù)據(jù)

{"1000":"missing parameter","2000":"server internal exception","0000":"operation succeeded"}

三,將該服務(wù)引入eureka注冊中心

上面服務(wù)實際上已經(jīng)注冊到eureka注冊中心中,但是,實際上使用中,我們都是通過網(wǎng)關(guān)訪問的,所以在網(wǎng)關(guān)服務(wù)的application.yml中,補充下該服務(wù)的路由

server:
  port: 8764
  servlet:
    context-path: /lmc

spring:
  application:
    name: tools-gateway
  profiles:
    active: dev
  cloud:
    # 消息總線
    bus:
      trace:
        enabled: true
    # 網(wǎng)關(guān)配置
    gateway:
      discovery:
        locator:
          enabled: true # 開啟根據(jù)注冊中心路由,并隨服務(wù)的改變而改變路由
          lower-case-service-id: true # 開啟服務(wù)名轉(zhuǎn)為小寫
#        globalcors:
#        default-filters:
#        - PreserveHostHeader #發(fā)送原主機頭
      routes:
        - id: tools-task
          uri: lb://tools-task
#          uri: http://localhost:8083
          predicates:
            - Path=/tltk/**
        - id: tools-admin
          uri: lb://tools-admin
          predicates:
            - Path=/monitor/**
          filters:
            - PreserveHostHeader #發(fā)送網(wǎng)關(guān)原始主機頭
        - id: tools-demo
          uri: lb://tools-demo
          predicates:
            - Path=/demo/**
        - id: tools-eureka-proxy
          uri: lb://tools-eureka-proxy
          predicates:
            - Path=/eureka-proxy/**

eureka:
  client:
    registry-fetch-interval-seconds: 10
  instance:
    instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port} # 實例名:application:ip:port
    prefer-ip-address: true # 優(yōu)先使用IP地址作為主機名的標識
    lease-renewal-interval-in-seconds: 180 # 續(xù)約更新時間間隔
    lease-expiration-duration-in-seconds: 200
    #  項目配置有 server.servlet.context-path 屬性,想要被 spring boot admin 監(jiān)控,就要配置以下屬性
    health-check-url: http://${spring.cloud.client.ip-address}:${server.port}/actuator/health

# 暴露監(jiān)控斷點
management:
  endpoints:
    web:
      exposure:
        include: "*"
      health:
        show-details: always

logging:
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n"
    file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n"

然后重啟網(wǎng)關(guān)服務(wù),訪問 http://localhost:8764/eureka-proxy/apiMessages/getAll,得到

{"1000":"缺少參數(shù)","2000":"服務(wù)器內(nèi)部異常","0000":"操作成功"}

因此,eureka成功從nacos獲取數(shù)據(jù)。

到此這篇關(guān)于SpringCloud服務(wù)實現(xiàn)同時使用eureka和nacos方法介紹的文章就介紹到這了,更多相關(guān)SpringCloud eureka和nacos內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實現(xiàn)解析第三方接口返回的json

    Java實現(xiàn)解析第三方接口返回的json

    在實際開發(fā)過程中,免不了和其他公司進行聯(lián)調(diào),調(diào)用第三方接口,這個時候我們就需要根據(jù)對方返回的數(shù)據(jù)進行解析,獲得我們想要的字段,下面我們就來看看具體有哪些方法吧
    2024-01-01
  • Java日常練習題,每天進步一點點(15)

    Java日常練習題,每天進步一點點(15)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • Java在創(chuàng)建文件時指定編碼的實現(xiàn)方法

    Java在創(chuàng)建文件時指定編碼的實現(xiàn)方法

    本文主要介紹了Java在創(chuàng)建文件時指定編碼的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • java控制臺實現(xiàn)學生信息管理系統(tǒng)(集合版)

    java控制臺實現(xiàn)學生信息管理系統(tǒng)(集合版)

    這篇文章主要為大家詳細介紹了java控制臺實現(xiàn)學生信息管理系統(tǒng)的集合版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Java二分查找算法實例詳解

    Java二分查找算法實例詳解

    在本篇文章里小編給大家分享總結(jié)的是一篇關(guān)于Java二分查找算法實例詳解內(nèi)容,對此有興趣的朋友們可以跟著學習下。
    2022-11-11
  • Spring?Bean自動裝配入門到精通

    Spring?Bean自動裝配入門到精通

    自動裝配是使用spring滿足bean依賴的一種方法,spring會在應(yīng)用上下文中為某個bean尋找其依賴的bean,Spring中bean有三種裝配機制,分別是:在xml中顯式配置、在java中顯式配置、隱式的bean發(fā)現(xiàn)機制和自動裝配
    2022-08-08
  • java連接Mysql數(shù)據(jù)庫的工具類

    java連接Mysql數(shù)據(jù)庫的工具類

    這篇文章主要介紹了java連接Mysql數(shù)據(jù)庫的工具類,非常的實用,推薦給大家,需要的朋友可以參考下
    2015-03-03
  • Java實現(xiàn)簡單的銀行管理系統(tǒng)的示例代碼

    Java實現(xiàn)簡單的銀行管理系統(tǒng)的示例代碼

    這篇文章主要介紹了如何利用Java實現(xiàn)簡單的銀行管理系統(tǒng),可以實現(xiàn)存款,取款,查詢等功能,文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-09-09
  • java的json解析類庫使用示例

    java的json解析類庫使用示例

    這篇文章主要介紹了java的json解析類庫使用方法,這里使用Zson解析json,這是一個開源的json處理類庫
    2014-03-03
  • 深入了解Java排序算法

    深入了解Java排序算法

    本文主要介紹了深入了解Java排序算法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2007-03-03

最新評論

曲阳县| 吴堡县| 娄烦县| 龙井市| 古浪县| 绵竹市| 五峰| 皋兰县| 钟祥市| 陇西县| 涡阳县| 冕宁县| 逊克县| 石门县| 巧家县| 咸宁市| 抚远县| 瑞安市| 乌拉特后旗| 东至县| 白城市| 沾化县| 康乐县| 自贡市| 凌源市| 临泽县| 克拉玛依市| 澜沧| 赤水市| 扶绥县| 潮安县| 全椒县| 霸州市| 临泉县| 苏州市| 天柱县| 武清区| 威远县| 阜新市| 石柱| 台中县|