Java 如何从AbstractGatewayFilterFactory中的流量中获取数据

Java 如何从AbstractGatewayFilterFactory中的流量中获取数据,java,project-reactor,spring-cloud-gateway,Java,Project Reactor,Spring Cloud Gateway,我有一个ReactiveDiscoveryClient,它提供了一个方法Flux-getInstances(stringserviceid)。我想在我的GatewayFilterFactory的apply方法中使用该方法的结果。但是, ServiceInstance si = reactiveDiscoveryClient.getInstances(config.getServiceId()).block(); 失败,因为不允许执行块操作。它周围有什么东西吗 我所做的是欺骗,因为我的React

我有一个
ReactiveDiscoveryClient
,它提供了一个方法
Flux-getInstances(stringserviceid)
。我想在我的GatewayFilterFactory的apply方法中使用该方法的结果。但是,

ServiceInstance si = reactiveDiscoveryClient.getInstances(config.getServiceId()).block();
失败,因为不允许执行块操作。它周围有什么东西吗


我所做的是欺骗,因为我的ReactiveDiscoveryClient有一个包含服务的内存映射,我只提供了一个额外的方法来获取我需要的值。

这很少见,默认情况下,这些操作是允许的。从

SpringCloudCommons提供@EnableDiscoveryClient注释。这是找 DiscoveryClient和ReactiveDiscoveryClient的实现 与META-INF/spring.factories的接口。实现 发现客户端将配置类添加到spring.factories下 org.springframework.cloud.client.discovery.EnableDiscoveryClient 钥匙DiscoveryClient实现的示例包括SpringCloud Netflix Eureka、Spring Cloud Consult Discovery和Spring Cloud 动物园管理员发现

Spring云将提供阻塞和响应服务 默认情况下发现客户端。您可以禁用阻止和/或 通过设置 spring.cloud.discovery.blocking.enabled=false或 spring.cloud.discovery.reactive.enabled=false。完全禁用 只需设置服务发现 spring.cloud.discovery.enabled=false


至少在上一段中,您应该能够执行
block()
。无论如何,您可以尝试设置这些参数,因为这些参数应该足以允许您调用它:

spring.cloud.discovery.blocking.enabled=true
spring.cloud.discovery.reactive.enabled=true
spring.cloud.discovery.enabled=true

此外,不确定是否相关,但也请注意此警告(以防万一)


实际上,我在你发布的屏幕截图上打开了一个bug。我之所以使用ReactiveDiscoveryClient,是因为DiscoveryClient没有按照给出的说明工作。那些spring的家伙……最后我回到了我的旧分支,它使用了旧版本的Gateway,因为应该在2020.0.2如果我们运气好的话。@ArchimedesTrajano你应该回答这个问题,你修正了它,所以……这将是正确的事情;)他已经为此道歉了