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

如何定期使用项目反应器对Flux进行采样?

龚国源
2023-03-14

我当前的尝试在下面,但这只打印一个值。我希望采样定期继续,以便每秒打印一个值。如何做到这一点?

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import reactor.core.publisher.Flux;

import java.time.Duration;

public class Test {
    private static final Logger logger = LogManager.getLogger(Test.class);

    public static void main(String[] args) {

        Flux.<String>create(sink -> sink.next("HEARTBEAT"))
                .sample(Flux.interval(Duration.ofSeconds(1)))
                .subscribe(logger::info);

        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

共有1个答案

阮选
2023-03-14

您的示例中的采样确实会定期进行,它将每秒采样一次。然而,您的原始通量。createcall只创建一个值,所以只有一个值需要采样!

如果您将Flux.create()替换为Flux.generate(),它将不断流式传输“HEARTBEAT”,因此您的采样将按预期工作。

 类似资料:
  • 通过调用直接创建通量并在的lambada表达式中使用接收器,与使用提供的接收器有什么区别? 在一个Flux只发出几个事件的最小示例中,我可以 与使用 为了澄清一下:我知道我可以在这里使用,但我的用例实际上是在Spring的和Spring WebFlux之间建立一个桥梁,在这里我想为每个传入的特定资源SSE请求创建一个Flux,然后将事件发布到这个Flux。 另一方面,它有不能处理背压的局限性。因此

  • 我是一个新的基于项目反应器的反应式框架,比如SpringWebFlux,对此我有一些问题。 问题1: 例1: 例2: 两个示例之间是否存在差异,或者两者都可以接受。 问题二: 例1: 例2: 第二个问题很奇怪,我知道,但我想知道所有的方法都应该返回单声道或通量,或者我可以像问题2/示例1一样使用。

  • 我有一个类扩展了React。组件类,我将为我希望接收的道具传递我自己的接口。问题是当我使用webstorm linter说有问题,指出类型“typeof SomeComponent”上不存在属性“propTypes”。 我不知道为什么会这样...... 的代码为 当我编写以下代码创建函数组件时,会引发类似的异常: 在本例中,使用

  • 我想做的是利用我对连续负二项分布进行抽样的事实,这是得到头部所需要的试验数的分布,也就是说,如果f(X)是这个分布,那么f(X)给出了在我们遇到头部之前有X个尾部的概率,其中X不必是整数。如果我能对这个分布进行采样,那么我能做的就是,如果X是尾部的数量,那么我就能看到X是大于还是小于信用的数量;如果大于,那么我们用完所有的学分,但什么也没有发生,如果小于或等于,那么好事发生了,我们从学分的数目中减

  • 我在用一个垂直的图书馆。返回项目Reactor类型Mono的x应用程序。 我有一个verticle,它接收这种反应类型,并打算通过事件总线将内容发送到另一个verticle: 这是正确的方法吗?我应该换成垂直吗。在将消息发送到事件总线之前,x事件循环线程池?在一起使用这些库时,有什么我应该注意的吗?