gpt4 book ai didi

java - 从 AKKA 等 Actor 模型框架调用基于线程的 API

转载 作者:行者123 更新时间:2023-12-01 15:05:52 25 4
gpt4 key购买 nike

我有一个利用线程的第 3 方 API。我正在使用 Play 框架进行编码,并希望利用 Akka 来实现 ASYC 功能并实现实时结果。但我不确定将 Akka 与使用线程的 API 集成是否有意义。考虑以下场景:

  1. 使用套接字查询第 3 方 API,以使用股票代码返回股票价格
  2. 第 3 方接收消息,使用线程执行命令并执行其需要执行的任何其他操作。我并不真正担心它是如何做事的。只是指出它利用线程。
  3. 第 3 方 API 开始输出数据
  4. 处理返回的数据。如果数据与给定的用例匹配,请将其保存在数据库中并将其推送到浏览器。

您能否分享一下 Akka 在此用例中可以在哪些方面创造值(value)?非常感谢

最佳答案

Akka 专为异步处理而设计。因此,只有通过异步非阻塞 IO 与第三方 API 进行通信时,它才适合。这会将您的应用程序与第 3 方端的任何线程细节隔离。

更新

我认为 Play 上有这个问题!版本 1.x,如 Play 2.0 already uses an internal Akka Actor system to handle request processing .

你应该已经know那个

Play is intended to work with very short requests. It uses a fixed thread pool to process requests queued by the HTTP connector. To get optimum results, the thread pool should be as small as possible. We typically use the optimum value of nb of processors + 1 to set the default pool size.

因此,对于任何远程(或任何可能持久的)通信,您必须在异步中正确执行 non-blocking方式或在单独的线程中执行它,以防止负载下 Play 的微小线程池耗尽。无论您的第 3 方 API 是否使用锁。

另请注意,Play 有一些内置的 support for async processing 。可能是used instead of akka在这种情况下。只需使用返回 Future 的异步套接字 io 库,将其转换为 Promiseawait() 即可。类似于 Play 的 Web Service client 中的操作方式.

相关question on java socket nio .

此外,我建议缓存获取的股票报价以进一步提高性能。 Guava Cache是一个很好的候选人。在刷新模式下,即使使用同步 API,它也可用于执行更新报价的定期后台请求。

关于java - 从 AKKA 等 Actor 模型框架调用基于线程的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12966895/

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