java - akka-streams + akka 演员:mapAsyncUnordered + 询问模式问题
问题描述
我一直在使用 akka-actors 和 akka-cluster 一段时间。最近有个需求给代码加背压,用akka-streams原生模式mapAsyncUnordered + ask(消息顺序无所谓)来解决这个问题。
public class A extends AbstractActor {
public Receive createReceive() {
return receiveBuilder()
.match(String.class, this::start)
.build()
}
private void start(String msg){
getSender().tell(1,getSelf()); // acknowledgement for ask()
List<String> x = new ArrayList<>();
for(String h : children)
x.add(h);
Source.from(x)
.mapAsyncUnordered(2, s -> ask(getSelf(),s,askTimeout))
.runWith(Sink.ignore(), mat);
}
}
问题类似于探索一棵树。
如果树很小,这似乎工作正常。但是,如果树的大小增加,代码似乎会卡住并且无法运行。树可能有 1 亿个节点甚至更多。
有人可以帮助我如何使其工作或提出更好的方法。
解决方案
推荐阅读
- node.js - 从 Node/Express 中长期运行的 POST 提早返回
- bind - 在 openlayers 库源代码中混淆使用 bind
- java - 如何动态更改 Jackson 的 readvalue 中传递的 Type-Reference?
- ruby-on-rails - 如何在 role_adapter rolify 中覆盖 build_query 方法?
- java - 使用eclipse将表单数据发布到php服务器时如何获得正确的响应?
- r - 当我的目标函数是 R 中的 min(xy)^2 时,选择哪个函数以及如何编写?
- java - 当我只有名称而没有包时,如何找到 Java 类?
- python - 如何在 Python 中保存 ppm 图像的 png 副本
- wpf - WPF - 使用静态资源子设置 ContentTemplate?
- matlab - 如何使此代码更简单以更快地运行