【发布时间】:2018-01-13 03:45:28
【问题描述】:
我正在尝试通过 round-robin-pool 在 akka 路由中使用 resizer。但它不是创建实例。它正在处理我在 low-bound 中提到的实例。我正在关注 akka 2.5.3 版的文档。
我的配置:
akka.actor.deployment {
/round-robin-resizer {
router = round-robin-pool
resizer {
lower-bound = 4
upper-bound = 30
pressure-threshold = 0
rampup-rate = 0.5
messages-per-resize = 1
}
}
演员类:
return receiveBuilder()
.match(Integer.class, msg -> {
System.out.println("Message : " + msg + " Thread id : " + Thread.currentThread().getId());
Thread.sleep(5000);
})
.matchAny(msg -> {
System.out.println("Error Message : " + msg + " Thread id : " + Thread.currentThread().getId());
}).build();
}
演员创作:
ActorRef roundRobin = system.actorOf(FromConfig.getInstance().props(Props.create(RoutingActor.class)), "round-robin-resizer");
for (int i = 0; i < 15; i++) {
roundRobin.tell(i, ActorRef.noSender());
}
输出:
Message : 2 Thread id : 18
Message : 1 Thread id : 16
Message : 0 Thread id : 15
Message : 3 Thread id : 17
Message : 7 Thread id : 17
Message : 4 Thread id : 15
Message : 6 Thread id : 18
Message : 5 Thread id : 16
Message : 11 Thread id : 17
Message : 9 Thread id : 16
Message : 10 Thread id : 18
Message : 8 Thread id : 15
Message : 13 Thread id : 16
Message : 14 Thread id : 18
Message : 12 Thread id : 15
每 4 个结果后等待 5 秒以完成之前实例的工作。
查看线程 ID。对于演员实例的每一次创建,我都会让我的线程休眠一段时间。当时应该在不同的线程上分配新实例。但是这个过程一直运行到前三个实例。之后,它不会根据调整大小创建新实例。它正在按照循环池的正常流程附加消息。
【问题讨论】:
-
请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
-
你能帮我解决这个错误吗?
-
你能解决这个问题吗?我遇到了同样的问题,谢谢。
标签: java akka actor akka-actor