首页 > 解决方案 > Spring webflux - 连续发射器

问题描述

所以我有一个简单的方法

Flux<Task> getTaskToProcess();

我希望我的系统能够连续流式传输实体。现在我以老式的方式实现它

while(!Thread.currentThread().isInterrupted()){
    getTaskToProcess().flatMap(....)
}

我很确定这不是反应式方法的最佳方法。如何在项目反应堆中实现连续发射?

标签: spring-webfluxproject-reactor

解决方案


尝试 Flux#create 或 Flux# 生成:

Flux<Task> tasks = Flux.create(sink -> {
  while(!Thread.currentThread().isInterrupted()) {
     sink.next(something);
  }
  sink.complete();
})
.subscribeOn(Schedulers.newSingle("stdin publisher"))

推荐阅读