Java Akka actor resizer未创建实例

Java Akka actor resizer未创建实例,java,akka,actor,akka-actor,Java,Akka,Actor,Akka Actor,我正在尝试在akka路由中使用resizer,使用循环池。但它并没有创建实例。它正在处理我在下限中提到的实例。我正在关注akka2.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 mes

我正在尝试在akka路由中使用resizer,使用循环池。但它并没有创建实例。它正在处理我在下限中提到的实例。我正在关注akka2.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
}

演员的创作:

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和实际的参与者实例弄糊涂。参与者实例的数量与线程的数量不匹配。请参考其他类似问题中的答案:

您对线程id和实际参与者实例感到困惑。参与者实例的数量与线程的数量不匹配。请参考其他类似问题中的答案:

请阅读-总结是,这不是一种向志愿者致辞的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。您能帮助我解决此错误吗?您能解决此问题吗?我也遇到了同样的问题,谢谢。请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。您能帮助我解决此错误吗?您能解决此问题吗?我也遇到了同样的问题,谢谢。我试着用你的答案打印actor实例的地址路径。但我还是得到了同样的结果。它只在4个实例上运行@hveiga
消息:1路径:akka://firstActor/user/round-robin-resizer/$b消息:2路径:akka://firstActor/user/round-robin-resizer/$c消息:0路径:akka://firstActor/user/round-robin-resizer/$a消息:3个路径:akka://firstActor/user/round-robin-resizer/$d消息:4路径:akka://firstActor/user/round-robin-resizer/$a消息:6路径:akka://firstActor/user/round-robin-resizer/$c
您能给我举个简单的例子来验证resizer的循环池吗@hveigaI尝试使用您的答案打印actor实例的地址路径。但我仍然得到相同的结果。它仅在4个实例上运行@hveiga
消息:1路径:akka://firstActor/user/round-robin-resizer/$b消息:2路径:akka://firstActor/user/round-robin-resizer/$c消息:0路径:akka://firstActor/user/round-robin-resizer/$a消息:3个路径:akka://firstActor/user/round-robin-resizer/$d消息:4路径:akka://firstActor/user/round-robin-resizer/$a消息:6路径:akka://firstActor/user/round-robin-resizer/$c
您能给我举个简单的例子来验证resizer的循环池吗@赫维加