springcloud本地服務(wù)不注冊(cè)到注冊(cè)中心的解決方案
開(kāi)發(fā)人員本地的服務(wù)如果注冊(cè)到服務(wù)器的注冊(cè)中心,服務(wù)器上的服務(wù)如果調(diào)用到開(kāi)發(fā)本地的服務(wù)會(huì)調(diào)用不通,影響大家的開(kāi)發(fā)效率。
以往為了不把本地服務(wù)注冊(cè)到注冊(cè)中心,會(huì)采用以下幾種處理方式:
1、修改服務(wù)名,例如:將user-service修改為user-service-double,這樣別的服務(wù)就不會(huì)調(diào)用到開(kāi)發(fā)人員本地注冊(cè)上去的服務(wù)了
2、修改是否注冊(cè)到注冊(cè)中心的配置參數(shù)為false:
-Dspring.cloud.service-registry.auto-registration.enabled=false
第一種方案容易出現(xiàn)把修改后的service誤提交到git的情況,導(dǎo)致測(cè)試、生產(chǎn)注冊(cè)的服務(wù)名錯(cuò)誤
第二種方案需要每個(gè)開(kāi)發(fā)同學(xué)都手動(dòng)到IDE配置一個(gè)啟動(dòng)參數(shù),開(kāi)發(fā)人員過(guò)多(100+)不能保證每個(gè)同學(xué)都執(zhí)行到位
新方案:服務(wù)啟動(dòng)時(shí)判斷操作系統(tǒng)類(lèi)型,如果是Linux則注冊(cè)服務(wù),如果不是則不注冊(cè)(本地服務(wù)都是windows、mac系統(tǒng))將Processor處理類(lèi)放入基礎(chǔ)包中,這樣每個(gè)服務(wù)都引用到,不需要每個(gè)開(kāi)發(fā)同學(xué)都去處理本地服務(wù)不注冊(cè)問(wèn)題。
import org.springframework.boot.SpringApplication; import org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor; import org.springframework.boot.env.EnvironmentPostProcessor; import org.springframework.core.annotation.Order; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.MapPropertySource; import org.springframework.util.StringUtils; import java.util.HashMap; import java.util.Map; /** * 在spring上下文構(gòu)建之前可以設(shè)置一些系統(tǒng)配置 * 可以在創(chuàng)建應(yīng)用程序上下文之前,添加或者修改環(huán)境配置。 * * @author double * @Date 2022/1/26 11:43 上午 */ @Order(ConfigDataEnvironmentPostProcessor.ORDER + 1) public class CustomEnvironmentPostProcessor implements EnvironmentPostProcessor { private static final String PROPERTY_SOURCE_NAME = "discoveryProperties"; private static final String SERVICE_REGISTRY_CONFIG_KEY = "spring.cloud.service-registry.auto-registration.enabled"; @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { String serviceRegistry = environment.getProperty(SERVICE_REGISTRY_CONFIG_KEY); if(!StringUtils.hasText(serviceRegistry)) { boolean isLinux = System.getProperty("os.name").toLowerCase().contains("linux"); Map<String, Object> map = new HashMap<>(1); map.put(SERVICE_REGISTRY_CONFIG_KEY, isLinux); MapPropertySource propertySource = new MapPropertySource(PROPERTY_SOURCE_NAME, map); environment.getPropertySources().addLast(propertySource); } } }
到此這篇關(guān)于springcloud本地服務(wù)不注冊(cè)到注冊(cè)中心的文章就介紹到這了,更多相關(guān)springcloud注冊(cè)中心內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringCloud中的Eureka注冊(cè)中心詳細(xì)解讀
- SpringCloud zookeeper作為注冊(cè)中心使用介紹
- SpringCloud注冊(cè)中心之consul詳細(xì)講解使用方法
- SpringCloud?Eureka服務(wù)注冊(cè)中心應(yīng)用入門(mén)詳解
- SpringBoot項(xiàng)目改為SpringCloud項(xiàng)目使用nacos作為注冊(cè)中心的方法
- Java之SpringCloud nocos注冊(cè)中心講解
- 淺析SpringCloud Alibaba-Nacos 作為注冊(cè)中心示例代碼
- Springcloud-nacos實(shí)現(xiàn)配置和注冊(cè)中心的方法
- springcloud實(shí)現(xiàn)注冊(cè)中心Eureka
- SpringCloud兩種注冊(cè)中心的實(shí)現(xiàn)
相關(guān)文章
Lombok 的@StandardException注解解析
@StandardException 是一個(gè)實(shí)驗(yàn)性的注解,添加到 Project Lombok 的 v__1.18.22 版本中,在本教程中,我們將使用 Lombok 的 @StandardException 注解自動(dòng)生成異常類(lèi)型類(lèi)的構(gòu)造函數(shù),需要的朋友可以參考下2023-05-05SpringCloud如何使用Eureka實(shí)現(xiàn)服務(wù)之間的傳遞數(shù)據(jù)
這篇文章主要介紹了SpringCloud使用Eureka實(shí)現(xiàn)服務(wù)之間的傳遞數(shù)據(jù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06詳細(xì)講解springboot如何實(shí)現(xiàn)異步任務(wù)
異步:異步與同步相對(duì),當(dāng)一個(gè)異步過(guò)程調(diào)用發(fā)出后,調(diào)用者在沒(méi)有得到結(jié)果之前,就可以繼續(xù)執(zhí)行后續(xù)操作。也就是說(shuō)無(wú)論異步方法執(zhí)行代碼需要多長(zhǎng)時(shí)間,跟主線程沒(méi)有任何影響,主線程可以繼續(xù)向下執(zhí)行2022-04-04關(guān)于JSON.toJSONString()和Gson.toJson()方法的比較
本文介紹了兩種將Java對(duì)象轉(zhuǎn)換為JSON字符串的方法:阿里的`JSON.toJSONString()`和谷歌的`Gson.toJson()`,通過(guò)一個(gè)示例,展示了當(dāng)使用繼承關(guān)系且子類(lèi)覆蓋父類(lèi)字段時(shí),`Gson`會(huì)報(bào)錯(cuò),而`JSON`可以正常運(yùn)行,作者建議在處理JSON相關(guān)操作時(shí)使用阿里的`JSON`類(lèi)2024-11-11Spring Boot 之HelloWorld開(kāi)發(fā)案例
這篇文章主要介紹了Spring Boot 之HelloWorld開(kāi)發(fā)案例,需要的朋友可以參考下2017-04-04