Actor 模型实现中的多个 Apache HTTP 客户端

Multiple Apache HTTP Clients in an Actor model implementation

我对架构有疑问。有多种选择,似乎都是有效的,但我想做最正确的事情。

我有这个应用程序大量使用 Akka 的 actor 模型。一些参与者(不多)将使用 Apache HTTP 客户端执行出站 HTTP 调用,通常始终针对同一台服务器。

现在,我了解到 HTTPClient 的创建者声明您通常会在您的应用程序中使用一个 HTTP 客户端实例和一个池连接管理器。虽然我完全理解他们为什么这么说,但我觉得我应该为每个 actor 实例使用一个 Http 客户端和一个基本连接管理器,因为这样做如果客户端或连接管理器出现问题,就会抛出异常,并且supervisor 将重新启动 actor,清除可能持续存在的任何状态。

我要疯了吗?有什么建议吗?

我遇到过一次类似的问题,最后简单地使用了 akka-http。 ;-)

如果您坚持使用 apache httpclient,那么我个人会为每个 actor 使用它,因为正如您上面提到的那样,彼此之间的状态是隔离的。