我有一个简单的流声明如下:
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;
}))
答案 0 :(得分:0)
原来,Akka吞没了一个错误。我使用了监督策略,现在一切正常。