携程 Apollo 配置中心 | 学习笔记(十四)| 如何通过Apollo配置中心与Zuul实现动态路由

本章将介绍如何通过Apollo配置中心与Zuul实现动态路由 并实现热更新

专栏目录:

携程 Apollo 配置中心 | 学习笔记 序章

欢迎关注个人公众号:  Coder编程

欢迎关注个人网站:www.52melrin.com


版本

      Apollo: 0.10.2

      SpringBoot: 2.0.3.RELEASE


正文

@EnableApolloConfig
@EnableZuulProxy
@SpringBootApplication
public class Application {

  static final String ZUUL_PROPERTIES_BEAN = "ZUUL_PROPERTIES_BEAN";

  @Primary
  @Bean(ZUUL_PROPERTIES_BEAN)
  @RefreshScope
  @ConfigurationProperties("zuul")
  public ZuulProperties zuulProperties() {
    return new ZuulProperties();
  }

  public static void main(String[] args) throws Exception {
    System.setProperty("java.awt.headless", "false");
    ApplicationContext context = new SpringApplicationBuilder(Application.class).run(args);
    Desktop.getDesktop().browse(
        new URI("http://localhost:" + context.getEnvironment().getProperty("server.port", "8080")));
  }

}

ZuulPropertiesRefresher.java

import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.scope.refresh.RefreshScope;
import org.springframework.stereotype.Component;

@Component
public class ZuulPropertiesRefresher {

  private static final Logger logger = LoggerFactory.getLogger(ZuulPropertiesRefresher.class);

  @Autowired
  private RefreshScope refreshScope;

  @ApolloConfigChangeListener
  public void onChange(ConfigChangeEvent changeEvent) {
    boolean zuulPropertiesChanged = false;
    for (String changedKey : changeEvent.changedKeys()) {
      if (changedKey.startsWith("zuul.")) {
        zuulPropertiesChanged = true;
        break;
      }
    }

    if (zuulPropertiesChanged) {
      logger.info("Refreshing zuul properties!");
      refreshScope.refresh(Application.ZUUL_PROPERTIES_BEAN);
    }
  }
}

将application.properties 内容复制到Apollo配置中心

server.port = 9090
zuul.routes.users.path = /**
zuul.routes.users.url = https://www.baidu.com

启动项目,成功跳转百度页面.

在不重启项目的情况下修改路由地址:  zuul.routes.users.url = https://www.blog.csdn.net/

可以看到成功跳转至CSDN页面。



  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值