
网关程序的开发
发布日期:2021-05-07 00:29:54
浏览次数:9
分类:技术文章
本文共 3548 字,大约阅读时间需要 11 分钟。
出现问题
问题1:pom.xml中有标红
解决方法:等一下就好了,它之前可能没有下载完成
问题2:Zull无法注册到Eureka Server中
解决方法:是因为在application.yml文件中http都写成了https
主要工作
1.只使用单节点的Eureka Server
2.新建模块
3.配置pom.xml文件
imooc-ad com.imooc.ad 1.0-SNAPSHOT 4.0.0 ad-gateway 1.0-SNAPSHOT jar ad-gateway ad-gateway org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.cloud spring-cloud-starter-netflix-zuul org.springframework.boot spring-boot-maven-plugin 8 8
4.编写网关启动程序
package com.imooc.ad;@EnableZuulProxy@SpringCloudApplicationpublic class ZuulGatewayApplication { public static void main(String[] args){ SpringApplication.run(ZuulGatewayApplication.class,args); }}
5.编写配置文件yml
server: port: 9000spring: application: name: ad-gatewayeureka: client: server-url: defaultZone: http://server1:8000/eureka
6.自定义网关过滤器
(1)新建包
(2)新建PreRequestFilter
package com.imooc.ad.filter;import com.netflix.zuul.ZuulFilter;import com.netflix.zuul.context.RequestContext;import com.netflix.zuul.exception.ZuulException;import lombok.extern.slf4j.Slf4j;import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;import org.springframework.stereotype.Component;@Slf4j@Componentpublic class PreRequestFilter extends ZuulFilter { @Override public String filterType() { return FilterConstants.PRE_TYPE; } @Override public int filterOrder() { return 0; } @Override public boolean shouldFilter() { return true; } @Override public Object run() throws ZuulException { RequestContext ctx = RequestContext.getCurrentContext(); ctx.set("startTime",System.currentTimeMillis()); return null; }}
(3)新建AccessLogFilter(POST类型的Filter)
package com.imooc.ad.filter;import com.netflix.zuul.ZuulFilter;import com.netflix.zuul.context.RequestContext;import com.netflix.zuul.exception.ZuulException;import lombok.extern.slf4j.Slf4j;import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;import org.springframework.stereotype.Component;import javax.servlet.http.HttpServletRequest;@Slf4j@Componentpublic class AcessLogFilter extends ZuulFilter { @Override public String filterType() { return FilterConstants.POST_TYPE; } @Override public int filterOrder() { return FilterConstants.SEND_RESPONSE_FILTER_ORDER - 1;//系统的最后一个 post 过滤器执行之前 } @Override public boolean shouldFilter() { return true; } @Override public Object run() throws ZuulException { RequestContext ctx = RequestContext.getCurrentContext(); HttpServletRequest request = ctx.getRequest(); Long startTime = (Long)ctx.get("startTime"); String url = request.getRequestURI(); long duration = System.currentTimeMillis() - startTime; log.info("url: " + url + ": duration" + duration / 100 + "ms"); return null; }}
7.启动Eureka Server
8.启动网关
9.服务注册成功
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年03月30日 14时23分00秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
电脑重装系统后提示invalid partition table怎么解决
2019-03-04
c++ primer 5th 练习11.9自己编写的答案
2019-03-04
web实现断点续传
2019-03-04
自定义BootstrapTable扩展:分页跳转到指定页码
2019-03-04
Python3逻辑运算符
2019-03-04
【学习笔记】欧拉函数,欧拉公式
2019-03-04
Python3序列
2019-03-04
vue-cli中找不到jquery的原因,以使用ztree为例
2019-03-04
React中设置404页面
2019-03-04
BootstrapValidator手动触发部分验证
2019-03-04
vue调试工具vue-devtools安装及使用
2019-03-04
CSS总结div中的内容垂直居中的四种方法
2019-03-04
[BZOJ4878]挑战NP-Hard
2019-03-04
vue指令之v-for
2019-03-04
[CF1278F]Cards
2019-03-04
jQuery实现无刷新切换主题皮肤功能
2019-03-04
[CF932E]Team Work
2019-03-04
用postman测试url参数
2019-03-04
Random IS
2019-03-04
[CF1444C]Team-Building
2019-03-04