scala - 需要两个参与者才能完成的 Akka/Scala promise

标签 scala transactions akka promise future

我正在使用 Scala 和 Akka 构建股票市场应用程序。市场匹配买家和卖家,然后发送

Promise[Transaction]

买方和卖方都需要完成(在某个时刻)以便处理交易。

问题是 promise 可能会失败,因为

  1. 买方资金不足,
  2. 卖方股份不足。

如何创建需要两个参与者协调才能完成的 Scala Promise?

最佳答案

您可以执行以下操作:

def querySellingActor(seller : ActorRef) : Future[Boolean] = ???
def queryBuyingActor(buyer : ActorRef ) : Future[Boolean] = ???

// Calling these outside the for-comprehension 
// ensures that they are really parallel
val f1 = querySellingActor(sellerActor)
val f2 = queryBuyingActor(buyerActor)

val niceResult = for{
   sellerCanSell <- f1
   buyerCanBuy <- f2
} yield { sellerCanSell && buyerCanBuy }

niceResult 现在是一个可以传递的 Future[Boolean],您可以在其上安装回调。

关于scala - 需要两个参与者才能完成的 Akka/Scala promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27982265/

相关文章:

sql-server - 是否可以使用事务创建 SQL SERVER 函数

java - 如何统计akka系统中特定时间活跃的特定类型的actor?

scala - 使用testkit对akka进行gradle测试

java - PostgreSQL information_schema.tables 和 TRANSACTION ISOLATION LEVEL

scala - 跳过Scala可迭代中的前N个元素

java - 在 Spark MLlib 上使用来自 Java 的 Breeze

json - 为基本特征具有(密封)类型成员的密封案例类族派生circe Codec

java - Spring声明式事务管理: multiple pointcuts

java - akka actor 中私有(private)方法的 powermockito

scala - 如何扁平化嵌套元组?