问题标签 [spring-cloud-netflix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
323 浏览

java - 我们可以有一个通用的 HystrixCommand 子类,从中我们可以调用不同的依赖项吗?

我是 Hystrix 的新手。我有一个依赖调用列表,我需要使用 HystrixCommand 进行包装。我发现唯一可能的方法是为每个依赖调用创建单独的 HystricCommand 子类并在特定 hystrix 类的 run 方法中调用依赖。如果我需要包装 10 个依赖项调用,这将导致创建 10 个 HystrixCommand 子类,每个依赖项调用 1 个类。

有没有一种方法可以为我可以调用依赖项的所有 10 个依赖项调用创建一个通用的 HystrixCommand 子类?

0 投票
4 回答
13706 浏览

cookies - Spring Cloud Zuul 不转发 cookie

我遇到了 spring cloud Zuul 代理的问题。我已经配置并运行了两个微服务。我的网络浏览器中有一个 cookie,我使用 Zuul 作为 API 网关,当我点击 Zuul 调用我的后端时,Zuul 没有将我的 cookie 转发到我的后端,似乎 Zuul 忽略了发送的 cookie,我的后​​端是无法检索这个。

你能帮我解决这个问题吗?我正在使用 Spring cloud Brixton.RELEASE 和 spring boot 1.3.5

问候。

0 投票
2 回答
7288 浏览

spring-boot - 如何在 Spring Boot SSO + zuul 中从 OAuth 令牌中检索范围

我正在尝试使用 Spring boot SSO + Zuul 制作一个简单的 API 网关。我需要将 OAuth 范围转换为标头,其他一些后端服务将进一步使用这些标头来基于标头执行 RBAC。

我正在使用这个 CustomOAuth2TokenRelayFilter ,它基本上会在发送到后端之前设置标题。我的问题是如何从当前令牌中获取范围。OAuth2AuthenticationDetails 类确实提供了令牌值,但它不提供范围。

我不确定如何获得其中的范围。

下面是自定义 Zuul 过滤器,主要取自 https://github.com/spring-cloud/spring-cloud-security/blob/master/spring-cloud-security/src/main/java/org/springframework/cloud /security/oauth2/proxy/OAuth2TokenRelayFilter.java

0 投票
0 回答
1099 浏览

spring - 如何根据 http 响应代码启用/禁用功能区负载平衡?

使用 netflix 功能区有时您不想进行负载平衡,例如,如果响应代码为 404,您不希望进行负载平衡,但对于 503,您确实需要。

现在的问题是如何配置功能区来设置我上面提到的规则?

0 投票
1 回答
337 浏览

netflix-zuul - Spring Cloud Brixton.RELEASE zuul

我是spring cloud的新手,在我的项目(一个使用spring boot构建的微服务项目)中,我使用了spring cloud版本的Brixton.RC2,它运行良好。但是当我尝试将其版本升级到 Brixton.RELEASE 时,该项目不适用于 zuul(如果我直接访问 web 微服务,它可以工作,但如果我通过 zuul 访问,它不起作用),我没有更改任何内容在配置中。maven依赖是:

谁能指定我的项目出了什么问题?

谢谢和最好的问候!!

0 投票
2 回答
2705 浏览

spring-security - 在网关中配置 zuul.routes 时未调用拦截器

当我在 bootstrap.properties 中配置 zuul 路由时,我在gareway应用程序中定义的 TestHandlerInterceptor 不会为所有匹配/registrations的请求调用,但它会为所有其他请求调用 TestHandlerInterceptor.preHandle 正在成功处理

引导程序属性

TestHandlerInterceptor.java

GatewayApplication.java

TestHandlerInterceptor.preHandle 为 localhost:1122/api/test 执行,但它没有被 localhost:1122/registrations 调用

我正在尝试在我的拦截器中添加一个 AuthenticationService ,它将在请求任何子资源之前执行所有无状态身份验证(使用 api 密钥)。

我尝试了 ZuulFilter 实现,并且 MyZuulFilter.run() 调用了所有 localhost:1122/registrations 请求,但不适用于 localhost:1122/api/test

如何配置拦截器,使其先于其他任何东西执行

pom.xml

谢谢拉维

0 投票
1 回答
387 浏览

spring - 使用 HATEOAS 链接到另一个服务

我正在使用 Spring Cloud Netflix、Spring Data JPA 和 Spring Data REST 构建微服务。

我的服务的响应是 REST-HATEOAS 格式的。有没有办法在我的回复中自动添加指向其他微服务的链接?

例如,假设我有 2 个微服务:Team 和 Player。当请求一个团队时,是否有一种(简单的)方法可以将链接添加到球员(即球员服务)?

0 投票
2 回答
6102 浏览

java - Feign:根据响应状态重试

我目前正在使用 Spring Cloud 和 Feign 在我的应用程序中使用微服务。由于它可能发生,数据库连接等在单个服务实例中失败,使其返回 500 HTTP 状态代码,我想确保下一个服务器由服务的客户端重试。目前,当服务根本没有运行时,Ribbon 的重试机制就像一个魅力,但是当它收到 500 状态码时,它仍然会立即返回错误,而无需任何重试。

如果实例返回 500 响应,是否可以配置 Feign 客户端或其底层 Ribbon 负载均衡器以重试下一个服务器?

配置与此线程中的配置几乎相同:Feign retry 是否需要某种配置?

我很想使用像 Ribbons 的 HttpResponseValidator (https://github.com/Netflix/ribbon/blob/master/ribbon/src/main/java/com/netflix/ribbon/http/HttpResponseValidator.java)这样的实现,但是我找不到任何可用于 Spring Cloud 及其 Feign/Ribbon 集成的东西

0 投票
1 回答
1383 浏览

spring - 通过 Resttemplate 与 Spring Cloud 进行服务到服务通信(Oauth 2)

您好我正在尝试通过 Rest-template 从不同的服务调用 Spring Boot 服务。我现在使用 consul 作为服务发现 Service1-->rest-->Service2

我不希望通过 Zuul 的这种通信 service1 应该能够直接调用 service2 但功能区应该通过 consul 发现第二个服务。一切正常,但是当我尝试将 service1 调用到 service2 时,我在 service1 处遇到异常

下面是我的代码

注意:一切都在 https 上

0 投票
1 回答
5020 浏览

java - Fallback methods at Zuul server in Spring cloud

I am new in Spring Cloud Netflix and have some questions concerning it.
I am using the API Gateway together with Hystrix running at Zuul edge server and I would like to make sure if I understand the following behavior correctly:

I kill a microservice running "behind" API Gateway then I force hystrix to open the circuit. After that (ca 10 seconds) I send a request to the non-running microservice and receive TIMEOUT error. However when I send many (tens) of requests in a very short time (up to 1 sec), I receive SHORTCIRCUIT OPEN error.
I was surprised why I receive TIMEOUT error although the circuit is open and therefore hystrix should come to play to avoid such kind of failures. But I guess the reason is that if time since last request > circuitBreaker.sleepWindowInMilliseconds, then the API Gateway tries to connect to the microservice again to check if it's alive, but it wasn't, thus -> TIMEOUT. That would also explain, why I got SHORTCIRCUIT OPEN error on many requests in short time.

The next thing is that as I receive "TIMEOUT" or "SHORTCIRCUIT" error I got:

How can I specify a fallback at zuul server (this can be the same for all routes) to avoid this exception ?
What I have tried until now:

  • According this to I set execution isolation strategy to THREAD to avoid time-out:

    hystrix: command.default.execution.isolation.strategy: THREAD

but after looking at the hystrix.stream I got propertyValue_executionIsolationStrategy":"SEMAPHORE"

  • There seems to be a hint for solution on github by writing a custom RibbonCommand and overriding getFallback(), but after looking at RibbonCommand interface. I found out, that neither RibbonCommand nor its super interfaces doesn't define such a method.

My API Gateway service:

application.yml