添加流后流完成

时间:2019-03-20 20:48:01

标签: akka akka-stream reactive-streams

我有一个简单的流声明如下:

master_function <- 
  function(x, iter = 100, DEBUG = FALSE){
    x_p1 <- function(){ x <<- x + 1 }
    x_m1 <- function(){ x <<- x - 1 }
    if (DEBUG) {
      debug(x_p1)
      debug(x_m1)
    }

    path <- numeric(iter)
    for(i in 1:iter){
      next_step <- sample(c('p', 'm'), 1)
      if(next_step == 'p'){
        x_p1()
      } else { 
        x_m1()
      }
      path[i] <- x
    }
    path
  }

在archiveFlow注释掉的情况下,所有工作均按预期进行。但是,当我添加其他流程时,无论是存档流程还是这样的简单流程:

Source.tick(Duration.ofSeconds(1), Duration.ofSeconds(30), Files.list(rootDir).collect(Collectors.toList()))
                .mapConcat(files -> files)
                .log("scanning logs")
                .via(logsFlow.create())
                .via(kafkaFlow.create())
//                .via(archiveFlow.create())
                .runWith(Sink.ignore(), materializer)
                .whenComplete((a, b) -> {
                    log.info("done");
                });

流在第一次打勾后完成。 这是为什么?

.via(Flow.of(Path.class).map(path -> {
                    log.info("foo");
                    return path;
                }))

1 个答案:

答案 0 :(得分:0)

原来,Akka吞没了一个错误。我使用了监督策略,现在一切正常。