[英]Changing source data for akka streams
I'm learning about Java Akka streams and using https://doc.akka.io/docs/akka/current/stream/stream-flows-and-basics.html have defined the following:
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.ExecutionException;
public class SourceExample {
static ActorSystem system = ActorSystem.create("SourceExample");
public static void main(String args[]) throws ExecutionException, InterruptedException {
final List<Integer> sourceData = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
final Source<Integer, NotUsed> source =
Source.from(sourceData);
final Sink<Integer, CompletionStage<Integer>> sink =
Sink.<Integer, Integer>fold(0, (agg, next) -> agg + next);
final CompletionStage<Integer> sum = source.runWith(sink, system);
System.out.println(sum.toCompletableFuture().get());
}
}
运行此代码按预期运行。
问题是 Akka Streams 正在解决此代码可以重复执行。
在实际场景中, sourceData
不会是 static,Akka Streams 对如何处理变化的数据有意见还是由开发人员决定?
在最简单的情况下,只需在源数据更改时每 X 分钟重新执行一次流式流(例如使用计划任务)。 还是 Akka 流长期存在,源数据发生变化并且 stream 计算根据某些参数重新执行?
Akka Streams 文档定义了多个数据源,但我不明白如何使用 Akka Streams 来处理不断变化的源数据。
Akka Streams 可以并且经常运行,直到(不久之前)您的应用程序停止。 例如,使用 stream 的情况很常见(例如,使用来自 Alpakka Kafka 的 Kafka 消费者源)Kafka 记录在应用程序中很早就开始,直到应用程序被终止才停止。
详细地说,stream 一直运行到以下时间:
Source.from
将在发出10
后发出完成信号) 一个对动态数据有用的示例源(不引入 Alpakka 或 Akka HTTP)是Source.queue
,它具体化为一个队列,排队的元素可用于 stream。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.