【问题标题】:Schedule running a reactive stream for every 1 min安排每 1 分钟运行一次反应流
【发布时间】:2021-11-16 02:39:53
【问题描述】:

我有一个反应流,它获取一些数据,循环数据,处理数据,最后将数据写入 Kafka

public Flux<M> sendData(){

     Flux.fromIterable(o.getC()).publishOn(Schedulers.boundedElastic())
                .flatMap(id->
                        Flux.fromIterable(getM(id)).publishOn(Schedulers.boundedElastic())
                                .flatMap( n -> {
                                    return Flux.fromIterable(o.getD()).publishOn(Schedulers.boundedElastic())
                                            .flatMap(d -> return Flux.just(sendToKafka));
                                })
                )
                .doOnError(throwable -> {
                    log.debug("Error while reading data : {} ", throwable.getMessage());
                    return;
                })
                .subscribe();
}


public void run(String... args){
        sendData();
    }

我希望此工作流程每分钟运行一次。有人可以帮助我了解如何在流中安排这一点吗?

【问题讨论】:

    标签: apache-kafka spring-webflux spring-kafka project-reactor reactive-kafka


    【解决方案1】:

    如果你想每分钟运行一些东西,你可以这样做。

    Flux.interval(Duration.ofMinutes(1))
        .onBackpressureDrop()
        .flatMap(n -> sendData())
        .subscribeOn(Schedulers.boundedElastic())
        .subscribe()
    

    【讨论】:

    • 谢谢!那行得通。我添加了 .startWith(interval) 以便第一个进程立即启动,后续进程根据间隔运行
    猜你喜欢
    • 2014-03-29
    • 2017-12-16
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多