Akka actor 调整器不会创建实例



我正在尝试在带有循环池的 akka 路由中使用调整器。但它不是创建实例。它正在处理我在下限中提到的实例。我正在遵循 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。对于每个 actor 实例的创建,我都会让我的线程休眠一段时间。此时,应在不同的线程上分配新实例。但是这个过程一直运行到前三个实例。之后,它不会根据调整器创建新实例。它根据循环池的正常流程附加消息。

你对线程 id 和实际的参与者实例感到困惑。参与者实例数与线程数不匹配。请在其他类似问题中参考此答案:Akka 一致哈希路由逻辑未一致地路由到同一调度程序线程

相关内容

  • 没有找到相关文章