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

Webflux生产者消费者问题(webClient)

何玺
2023-03-14
    Flux.range(0, 100)
            .flatMap((Integer y) -> {
                return reallySlowApi(); 
            })
            .doOnEach((Signal<String> x1) -> {
                log("next-------" );
            })
            .subscribeOn(Schedulers.elastic())
            .subscribe()
    ;

我如何将电话限制在每5秒一次。注意:只能修改reallySlowApi。

private Mono<String> reallySlowApi() {
    return webClient
            .get()
            .retrieve()
            .bodyToMono(String.class);
}

编辑:我知道DelayElements,但是如果Api变得更慢,它就不能解决问题。我需要使用reallyslowapi的最佳方式。

共有1个答案

齐夕
2023-03-14

一种方法是使用delayElements()

  public void run() {
    Flux.range(0, 100)
        .delayElements(Duration.ofSeconds(5)) // only emit every 5 seconds
        .flatMap(y -> reallySlowApi())
        .doOnNext(x1 -> System.out.println("next-------"))
        .blockLast(); // subscribe AND wait for the flux to complete
  }

  private Mono<String> reallySlowApi() {
    return Mono.just("next");
  }

您还可以使用flux.interval()加上take()来限制迭代次数。

   Flux.interval(Duration.ofSeconds(5))
        .take(100)

请注意,示例中的subscribeOn不做任何部分工作,因为subscribe操作应用于0-100范围的生成,这不是阻塞。

 类似资料:
  • 所谓的生产者消费者模型就是 某个模块(函数)负责生产数据,这些数据由另一个模块来负责处理 一般生产者消费者模型包含三个部分 生产者、缓冲区、消费者 为什么生产者消费者模型要含三个部分?直接生产和消费不行么? 一个案例说明一切 生产者好比现实生活中的某个人 缓冲区好比现实生活中的邮箱 消费者好比现实生活中的邮递员 如果只有生产者和消费者, 那么相当于只有写信的人和邮递员,那么如果将来过去的邮递员离职

  • 向Kafka推送100,000条消息 在使用者使用所有100,000条消息之前,使用Ctrl-C关闭zookeeper和kafka服务(这是通过在consumer方法中使用来模拟的)。 发现 在zookeeper和kafka服务被关闭后,消费者继续在控制台上写消息。 问题 我如何使消费者从上次消费的消息的索引+1继续。 向Kafka推送100,000条消息 在使用者使用所有100,000条消息之前

  • 我有两个线程的问题,似乎没有正确同步。我基本上有一个布尔值名为“已占用”。当没有线程启动时,它被设置为false。但是当一个线程启动时,线程集被占用是真的,我有一个类,它有线程(run),它们调用下面的函数。 这是一个模拟银行的示例,它接收一个金额(初始余额),然后随机执行取款和存款。我的教授提到了一些关于从取款线程到存款线程的信号?这是怎么回事?在提取线程中,它应该运行到余额为2低,并等待存款线

  • 例如生产比较慢,而消费比较快,就会导致消费者消费到错误数据 package main import ( "fmt" "math/rand" "sync" "time" ) // 创建一把互斥锁 var lock = sync.Mutex{} // 定义缓冲区 var sce []int = make([]int, 10) // 定义生产者 fun

  • 本教程演示了如何发送和接收来自Spring Kafka的消息。 首先创建一个能够发送消息给Kafka主题的Spring Kafka Producer。 接下来,我们创建一个Spring Kafka Consumer,它可以收听发送给Kafka主题的消息。使用适当的键/值序列化器和解串器来配置它们。 最后用一个简单的Spring Boot应用程序演示应用程序。 下载并安装Apache Kafka 要

  • 生产者线程与消费者线程使用信号量同步 生产者线程与消费者线程使用信号量同步 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2018-08-24 yangjie the f