当前位置: 首页 > 知识库问答 >
问题:

了解webflux中的背压

弓晔
2023-03-14

我不熟悉反应式/网络流量,正在尝试理解网络流量中的背压。我有以下控制器。我们的应用程序接收一个JSON搜索请求,并用流量流进行响应。

@PostMapping(path = "/search",
            consumes = MediaType.APPLICATION_JSON_VALUE,
            produces = MediaType.APPLICATION_STREAM_JSON_VALUE)
public Flux<ResponseContainer> getItineraries(@RequestBody SearchRequest searchRequest){

        return searchService
              .convertToFlux(searchRequest)
              .map(<do some transformations>)
              .map(<WebClientRequestsDownstream>)
              .map(<aggregrate>);
    }

背压是应用于流的一个实例还是整个实例?i、 e.如果我有一个流,其中请求通过webflux控制器传入,那么在以前的请求中会减慢速度吗?会对将来的请求施加反向压力吗?或者只会因为基于当前活动请求的放缓而导致活动通量流的放缓而施加背压吗?

共有1个答案

秦诚
2023-03-14

通量是一个发布者,通过向订阅者处理订阅连接到“请求”。每个订阅者都有自己的订阅,因此您可以将这种关系视为单个请求的具体化,而发布者更像是endpoint(如果我们简化并只考虑冷发布者,即为每个订阅者生成专用数据集的发布者)。

背压是由订阅者呼叫订阅请求驱动的,因此它在每个请求的级别上是分开的。

 类似资料:
  • 我对spring Webflux和整个反应性的想法很陌生。我有一些关于spring Webflux如何基于其反应发布器(Flux/Mono)处理请求的问题。以一个简单的控制器为例: 我理解limitRate()充当下游请求的限制器。我的问题是,这种背压机制仅仅是根据我的参数(planetFlux)的单个请求而起作用的。WebFlux(或reactive programming)是否解决了请求负载过

  • 我试图弄清楚spring的反应性终点,这让我感到困惑。 我有一个endpoint,它返回一个映射的Mono,这个想法只是呈现一些任意的JSON。 作为请求的一部分,我做了一个mono.zip(mono.fromrunnable{...}),在这里我调用API获取数据。 在zip之后,我对结果执行一个.Map操作,并最终返回我希望看到呈现的地图。 当我到达endpoint时,不会呈现任何JSON,但

  • 是否有任何方法可以对非Java订阅服务器(例如,一些JS库)使用背压? 对于此发布者 此订阅者: 如果一次打印所有数字,但如果在打印每个数字之前都会暂停。除了JS之外,还有什么方法可以做到这一点吗?在我查看的所有Internet示例中,JS客户端只能监听事件流。如果Rest控制器返回生产者,如,是否可以改变客户端上事件的频率?

  • Java Integer类具有静态方法highestOneBit方法,该方法将返回一个单个一位的值,该值位于指定值中最高一位的位置,如果指定值本身等于零,则返回零。 例如,int 17的输入将返回16;因为17可以用二进制表示为10001,所以它将返回等于16的最左边的位。 在整数类中,它在Java文档中具有以下实现。 我只想知道以这种方式实现它背后的逻辑以及使用 shift 操作背后的逻辑。谁能

  • 问题内容: 我有一个div设置了背景图片: 使用以下CSS: 在Firefox,Safari和Chrome浏览器中会尊重背景尺寸。在IE8中,SVG替换为PNG文件。但是,在IE9和IE10中,SVG文件的大小已大大缩小。问题似乎与div的宽度和高度有关。如果我添加150px的高度,则SVG会正确呈现。如果将其缩小(即100px),图形将开始缩小。 是否有人在资源管理器中找到解决此问题的方法?有没

  • 我刚刚开始制作一个使用主机卡模拟(HCE)的应用程序,我做了各种各样的工作。我需要该应用程序使手机的行为像一张卡,而另一部手机的行为像一个NFC阅读器,并扫描它,反之亦然,以便交换一个非常小的信息-身份证号码。 我已经完成了一些功能单元,如ProcessDirecdApdu和定义AID,但我并不真正理解它是如何工作的。 这是我目前的代码。。。 @TargetApi(19)公共类主要活动扩展Host