0

我正在使用参与者通过 HTTP 调用向其他服务器发送请求。我选择这个的原因是因为我需要并行执行多个请求(比如说 10 个)。因此,我有一个参与者调度程序,它从数据库中读取条目并(通过告诉)向另一个参与者 requestSender 发送命令,该参与者发送请求,读取结果并进行一些处理。所以,现在我有一个 ActorsModule 配置如下:

bindActor(CheckScheduler.class, "scheduler", p -> new RoundRobinPool(1).props(p));
bindActor(RequestSenderActor.class, "requestSender", p -> new RoundRobinPool(10).props(p));

Guice 用于像这样注入请求发送者:

@Inject
@Named("requestSender")
private ActorRef requestSender;

tellfor 循环中完成:

for(int count = 0; count<10; count++) {
    requestSender.tell(...);
}

调度器也会监听一个响应,所以当它收到一个返回(表示 requestSender 已经完成)时,如果需要发送的请求超过 10 个,它会获取下一个并将其发送给请求发送者。简而言之,我总是最多并行处理 10 个请求。

但是,我觉得我做事不正确。主要是因为我找不到一种方法来扩展请求发送者参与者的数量。如果我只需要 5... 或 15 个怎么办,这取决于我可用的资源?我将如何动态更改池中的演员数量?我认为可能有更好的做事方式。有什么建议么?

4

0 回答 0