Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
檀越@新空间
SpringCloud-study
提交
f6fc046e
S
SpringCloud-study
项目概览
檀越@新空间
/
SpringCloud-study
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SpringCloud-study
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
f6fc046e
编写于
1月 11, 2023
作者:
Q
qinyingjie
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:网关
上级
c6736811
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
141 addition
and
0 deletion
+141
-0
springcloud-service-zuul/pom.xml
springcloud-service-zuul/pom.xml
+5
-0
springcloud-service-zuul/src/main/java/com/kwan/springcloud/GoodsServiceFallBackProvider.java
...va/com/kwan/springcloud/GoodsServiceFallBackProvider.java
+72
-0
springcloud-service-zuul/src/main/java/com/kwan/springcloud/ZuulApplication.java
...l/src/main/java/com/kwan/springcloud/ZuulApplication.java
+4
-0
springcloud-service-zuul/src/main/java/com/kwan/springcloud/filter/MyZuulFilter.java
...c/main/java/com/kwan/springcloud/filter/MyZuulFilter.java
+49
-0
springcloud-service-zuul/src/main/resources/application.yaml
springcloud-service-zuul/src/main/resources/application.yaml
+11
-0
未找到文件。
springcloud-service-zuul/pom.xml
浏览文件 @
f6fc046e
...
@@ -32,6 +32,11 @@
...
@@ -32,6 +32,11 @@
<artifactId>
spring-cloud-starter-netflix-zuul
</artifactId>
<artifactId>
spring-cloud-starter-netflix-zuul
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-netflix-eureka-client
</artifactId>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
springcloud-service-zuul/src/main/java/com/kwan/springcloud/GoodsServiceFallBackProvider.java
0 → 100644
浏览文件 @
f6fc046e
package
com.kwan.springcloud
;
import
org.springframework.cloud.netflix.zuul.filters.route.FallbackProvider
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.client.ClientHttpResponse
;
import
org.springframework.stereotype.Component
;
import
java.io.ByteArrayInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
/**
* FallbackProvider(请求异常处理)
* <p>
* 网关的默认回退FallbackProvider的机制只适用于通过配置文件中配置的url来跨服务调用,而不拦截通过FeignClient跨服务调用,
* 也就是说要自己实现一个FeignClient服务的fallback才可以,但是如果通过FeignClient的服务要是特别多怎么办,每一个都要写一个不得累死,
* 这里想到了通过网关的错误过滤器来统一处理FeignClient跨服务调用出错的问题
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/1/11 12:48
*/
@Component
public
class
GoodsServiceFallBackProvider
implements
FallbackProvider
{
@Override
public
String
getRoute
()
{
return
"goods-service"
;
}
@Override
public
ClientHttpResponse
fallbackResponse
(
String
route
,
Throwable
cause
)
{
return
new
ClientHttpResponse
()
{
@Override
public
HttpHeaders
getHeaders
()
{
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON_UTF8
);
return
headers
;
}
@Override
public
InputStream
getBody
()
throws
IOException
{
return
new
ByteArrayInputStream
(
"order-service is not available!"
.
getBytes
());
}
@Override
public
HttpStatus
getStatusCode
()
throws
IOException
{
return
HttpStatus
.
BAD_REQUEST
;
}
@Override
public
int
getRawStatusCode
()
throws
IOException
{
return
this
.
getStatusCode
().
value
();
}
@Override
public
String
getStatusText
()
throws
IOException
{
return
this
.
getStatusCode
().
getReasonPhrase
();
}
@Override
public
void
close
()
{
}
};
}
}
springcloud-service-zuul/src/main/java/com/kwan/springcloud/ZuulApplication.java
浏览文件 @
f6fc046e
package
com.kwan.springcloud
;
package
com.kwan.springcloud
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.cloud.netflix.zuul.EnableZuulProxy
;
@EnableZuulProxy
@EnableZuulProxy
@SpringBootApplication
@SpringBootApplication
public
class
ZuulApplication
{
public
class
ZuulApplication
{
...
...
springcloud-service-zuul/src/main/java/com/kwan/springcloud/filter/MyZuulFilter.java
0 → 100644
浏览文件 @
f6fc046e
package
com.kwan.springcloud.filter
;
import
com.netflix.zuul.ZuulFilter
;
import
com.netflix.zuul.context.RequestContext
;
import
com.netflix.zuul.exception.ZuulException
;
import
org.springframework.stereotype.Component
;
import
javax.servlet.http.HttpServletRequest
;
@Component
public
class
MyZuulFilter
extends
ZuulFilter
{
/**
* 表示当前的过滤器是否被调用
*/
@Override
public
boolean
shouldFilter
()
{
return
true
;
}
/**
* filterOrder表示执行的优先级,值越小表示优先级越高
*/
@Override
public
int
filterOrder
()
{
return
0
;
}
/**
* pre: 在请求被路由之前调用
* routing: 在请求被路由之中调用
* post: 在请求被路由之后调用
* error: 处理请求发生错误时调用
*/
@Override
public
String
filterType
()
{
return
"pre"
;
}
/**
* 真正执行Filter逻辑的方法
*/
@Override
public
Object
run
()
throws
ZuulException
{
RequestContext
ctx
=
RequestContext
.
getCurrentContext
();
HttpServletRequest
request
=
ctx
.
getRequest
();
System
.
err
.
println
(
"--------------uri: -------------- "
+
request
.
getRequestURI
());
return
ctx
;
}
}
\ No newline at end of file
springcloud-service-zuul/src/main/resources/application.yaml
浏览文件 @
f6fc046e
...
@@ -6,6 +6,17 @@ spring:
...
@@ -6,6 +6,17 @@ spring:
application
:
application
:
name
:
zuul-service
#服务名称
name
:
zuul-service
#服务名称
#路由规则:
zuul
:
sensitiveHeaders
:
Cookie,Set-Cookie,Authorization
routes
:
api-portal
:
path
:
/portal-service/**
#访问路径:http:/localhost:5001/hello-service/hello
serviceId
:
portal-service
api-goods
:
path
:
/goods-service/**
serviceld
:
goods-service
#服务提供者
#服务提供者
eureka
:
eureka
:
client
:
client
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录