当前位置: 首页 > 知识库问答 >
问题:

如何使用Akka actors处理Java futures

刘狐若
2023-03-14

我在Java web应用程序中有一个分层体系结构。UI层只是Java,服务是Akka类型的actor,外部服务调用(WS、DB等)包装在Hystrix命令中。

AkkaFuture future = service.getSomeData();
public AkkaFuture getSomeData() {
    return future {
        JavaFuture future = new HystrixCommand(mapSomeData()).queue()
        //what to do here, currently just return future.get()
    }
}

问题是,我想释放服务参与者正在使用的线程,而只是绑定Hystrix使用的线程。但是java的未来阻止了这一点,因为我必须阻止它的完成。我能想到的唯一选项(我不确定我喜欢)是不断地轮询Java future(一个或多个),并在Java future完成时完成Akka future。

注意:这个问题与Hystrix本身并不相关,但如果有人提出了一个与Hystrix相关的解决方案,我决定提到这个问题。

共有1个答案

叶智
2023-03-14

Java futures在设计上不如Scala futures。例如,看一看讨论“我如何在Akka Future中包装一个java.util.concurrent.Future”。

但是:也许Hystrix提供了某种oncomplete回调,而不是轮询(如上面讨论中所建议的)?我完全不知道这个库,但无意中发现了Hystrix API中的oncomplete。也许有用?

 类似资料:
  • 问题内容: 我正在连接到一个网站,正在登录。 该网站将我重定向到新页面,并且Mechanize处理所有cookie和重定向作业,但是,我找不到最后一页。我使用Firebug并再次完成了相同的工作,然后发现我必须通过Mechanize传递另外两页。 我快速浏览了一下页面,发现有一些JavaScript和HTML代码,但由于它看起来不像普通的页面代码而无法理解。这些页面是做什么用的?他们如何重定向到其

  • 我很难处理压缩文件,例如:

  • 问题内容: 我正在寻找一种数学解决方案,该解决方案可以处理真实(长,大,大,风暴)数字。我还没有发现任何东西,但是我不想现在这个问题还没有解决。我正在寻找一种简单的Number解决方案,例如MicrosoftExcelPrecision(30位十进制)或BigInteger(Java)解决方案。当然是用Java语言编写的。 问题答案: BigInt现在是Firefox和Chrome的一部分; 你不

  • 问题内容: 我需要从Sellercentral.amazon.de下载大量的excel文件(估计:500-1000)。手动下载不是一种选择,因为每次下载都需要单击几下,直到Excel弹出。 由于亚马逊无法为我提供具有其结构的简单xml,因此我决定自行进行自动化。首先想到的是Selenium和Firefox。 问题: 必须登录到Sellercentral,以及2要素验证(2FA)。因此,如果我登录一

  • 问题内容: 我正在Spark中将模型实现为python类,并且每次尝试将类方法映射到RDD时,它都会失败。我的实际代码更加复杂,但是这个简化的版本成为了问题的核心: 现在,如果我像这样运行模型(例如): 我收到以下错误: 例外:看来您试图从广播变量,操作或转换中引用SparkContext。SparkContext只能在驱动程序上使用,而不能在工作程序上运行的代码中使用。有关更多信息,请参见SPA

  • 是否有办法过滤掉所有大于最大值的值,这些值可以使用Stream API存储在中? 目前的情况是,你可以在前端用一个简单的搜索栏搜索一些客户的身份证。 例如:

  • 问题内容: 我有一个来自我的应用程序的时间戳值。用户可以在任何给定的本地TimeZone中。 由于此日期用于假定给定时间始终为格林尼治标准时间的Web服务,因此我需要将用户的参数从(EST)转换为(GMT)。这是一个关键点:用户忽略了自己的TZ。他输入了要发送给WS的创建日期,所以我需要的是: 用户输入: 2008年5月1日下午6:12(美国东部标准时间) WS的参数必须为:2008年5月1日下午

  • 问题内容: 我使用 Selenium来 启动浏览器。如何处理要求浏览器接受证书的网页(URL)? 我重复我的问题: 当我启动 使用Selenium(Python编程语言)的浏览器(Internet Explorer,Firefox和Google Chrome)时,如何自动接受网站的证书? 问题答案: 对于Firefox,您需要将 选项设置为 : 对于Chrome,您需要添加参数 argument: