gpt4 book ai didi

scala - 将消息转发到下一个 Round Robin 路由器

转载 作者:行者123 更新时间:2023-12-04 19:48:03 24 4
gpt4 key购买 nike

我有这个 Play 应用程序,它连接到远程服务器以使用给定的 API。为了平衡我对远程服务器的请求,我将多个帐户连接到同一台服务器。每个帐户都可以查询 API 给定的次数。每个帐户都由一个 Akka actor 处理,这些 actor 在 Akka Round Robin 路由器后面。因此,当想要使用远程 API 时,我“向”RR 路由器“询问”所需的信息。

此实现运行良好,直到一个帐户断开连接。基本上,当一个帐户断开连接时,参与者返回一个给定对象,表示“连接出现问题”,然后我再次向 RR 路由器发送第二个请求,由另一个帐户处理。

我的问题是,有没有办法在路由器路由组之外进行“重试”逻辑,而不是在内部进行?我在想,例如在路由器级别,定义一个逻辑来处理这些“连接有问题”消息,方法是自动将请求转发到下一个由它处理的路由,并且只有在所有路由都具有时才返回最终响应已经尝试过但没有成功?

Akka 是否提供了实现此目的的简单方法,还是我应该继续我的实现?

最佳答案

我不确定我是否完全理解您的设计,但我认为您应该尝试使用 ScatterGatherFirstCompleted 路由逻辑支持的第一个完整模型

router.type-mapping {
...
scatter-gather-pool = "akka.routing.ScatterGatherFirstCompletedPool"
scatter-gather-group = "akka.routing.ScatterGatherFirstCompletedGroup"
..
}

简单的形式

                  ---> Route
--> SGFC-1
RR ->

或者可能与循环路由器结合使用。

                  ---> Route
--> SGFC-1
RR ->
--> SGFC-2
---> Route

与在您的提案中一样,连接由路线表示。 SGFC-1 和 SGFC-2 应该可以访问相同的路由池(连接)或池的一部分。

关于scala - 将消息转发到下一个 Round Robin 路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24354737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com