【发布时间】:2020-04-16 21:43:12
【问题描述】:
我是 Akka 和 Akka 流的新手。我创建了一个虚拟流,我希望它以异常结束,因为我的 map() 函数非常慢,我将缓冲区设置为 1。
所以我的问题分为两部分:
- 为什么这段代码可以正常工作?
- 如何模拟溢出? (用于学习目的)
import akka.NotUsed;
import akka.actor.ActorSystem;
import akka.stream.OverflowStrategy;
import akka.stream.javadsl.Sink;
import akka.stream.javadsl.Source;
public class Application {
public static void main(String[] args) {
final ActorSystem system = ActorSystem.create("reactive-test");
Source<Integer, NotUsed> source =
Source.range(0, 10000000)
.buffer(1, OverflowStrategy.fail())
.map(Application::doubleInt);
source.runWith(Sink.foreach(a -> System.out.println(a)), system);
}
private static Integer doubleInt(int i) {
try {
Thread.sleep(2_000);
} catch (Exception e) {
System.out.println(e);
}
return 2 * i;
}
}
【问题讨论】:
标签: java akka akka-stream