通过Eureka服务器注册/发现Spring Boot微服务,试用Spring Cloud Gateway。该设置运行良好,客户端可以通过网关调用发现的服务,没有问题,这是很好的。
现在,我试图测试一个场景,其中客户机调用服务(通过网关),目前没有可用的实例来为该调用提供服务(即服务关闭)。当我们测试这个场景时,默认行为是客户机得到一个500的内部服务器错误响应。最简单的方法是什么来改变这个默认行为来返回一个503服务不可靠的响应呢?
当前堆栈:
Java 8
Spring Boot 2.0.0.M6
Spring Cloud 2.0.0.M3
Spring Cloud Starter Eureka 2.0.0.M2 (in Gateway JVM)
Spring Cloud Starter Netflix Ribbon 2.0.0.M3 (in Gateway JVM)
Spring Cloud Starter Netflix Eureka Server 2.0.0.M3 (in Eureka Server JVM)
最后,我们决定保持错误响应不变。即HTTP 500-无法找到test-service-name的实例
。但是,我们已经向网关的路由机制添加了功能,以便在每个路由中包括enabled:trueFalse
标志,现在允许我们根据需要暂时启用/禁用对这些微服务的访问。为此,我们重新构建标记为enabled:false
的路由,以便在其中包含gatewayfilter
,返回:
Mono.error(new WebRequestException(HttpStatus.SERVICE_UNAVAILABLE, "SERVICE_UNAVAILABLE",
"Service is down for maintenance"));
每当调用该enabled:false
路由时。
WebRequestException
是我们自己的Throwable
类,然后我们在自己的WebExceptionHandler
中拦截该类,该类根据需要处理ServerWebExchange
的ServerHttpResponse
。
注意1:网关在内部使用spring-boot-starter-webflux
。
注意2:每当我们更改路由的enabled
标志的状态时,我们:1)重新构建路由,2)调用cachingroutelocator
bean的.refresh()
方法,以便在没有gatewayfilter
的情况下重新缓存路由。
问题内容: 我有一个PDO功能: 当我执行选择查询以返回一行(或更多)时,它将返回例如: 当查询失败时(例如,如果我使用错误的语法),它将返回FALSE。 但是,如果在查询中未找到任何行,则它还会返回FALSE。 因此,查询中有错误且没有行的返回值都将返回FALSE。那怎么可能?仅当查询中有错误时,我才需要返回FALSE,例如,当没有结果时,我就需要返回NULL。我的功能有问题吗? 谢谢! 问题答
我得到错误:com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法通过使用安全套接字层(SSL)加密建立到SQL服务器的安全连接。错误:“SQL服务器没有返回响应。连接已关闭。” Hibernate配置: application.properties: pom.xml: SQLServerException: openssl客户端连接服务器:1
此错误发生在,当方法运行时。 向添加注释不能解决问题-https://stackoverflow.com/a/32552558/3536552 你知道怎么修吗?
我有一个接收HTTP请求的微服务(Java Spring Boot),然后通过HTTP调用REST API调用另一个服务。被调用的服务返回HTTP状态201(无响应正文),但我需要返回HTTP 200和响应正文。 我使用WebClient调用其他服务,对于201状态,我使用的是bodyToMono(Void.class)。那么,如何为我的微服务的客户端返回HTTP 200响应体呢?最佳做法是什么?
我有一个主类,在那里初始化实例。然后,在getter的帮助下,我想从另一个类获取相同的实例,然而,它抛出了一个空指针异常。 其他类:
给定一个具有用于初始化的帮助器方法的类: 是否可以从\u int方法注释