scala之Duration

import scala.concurrent.duration._

val duration = Duration(100, MILLISECONDS)
val duration = Duration(100, "millis")

转载于:https://www.cnblogs.com/wcLT/p/6628128.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要调用一个RPC服务,首先需要定义一个RPC客户端。在Scala,可以使用Akka Remote或者Finagle来实现RPC客户端。这里以Akka Remote为例: 1. 定义接口 首先,需要定义一个接口,这个接口定义了RPC服务的方法。例如,定义一个计算器接口: ```scala trait Calculator { def add(x: Int, y: Int): Int def subtract(x: Int, y: Int): Int } ``` 2. 启动远程服务 接下来,需要启动一个远程服务。在这个例子,使用Akka Actor来实现远程服务: ```scala class CalculatorActor extends Actor with Calculator { def add(x: Int, y: Int) = x + y def subtract(x: Int, y: Int) = x - y def receive = { case Add(x, y) => sender() ! add(x, y) case Subtract(x, y) => sender() ! subtract(x, y) } } object CalculatorServer extends App { val system = ActorSystem("CalculatorSystem") val calculator = system.actorOf(Props[CalculatorActor], name = "calculator") IO(Http) ! Http.Bind(calculator, interface = "localhost", port = 8080) } ``` 这个代码启动了一个Akka Actor,并将其绑定到8080端口上。这个Actor实现了定义好的Calculator接口,并在接收到Add和Subtract消息时调用相应的方法进行计算。 3. 创建RPC客户端 最后,需要创建一个RPC客户端来调用远程服务。在这个例子,使用Akka Remote来实现RPC客户端: ```scala object CalculatorClient extends App { val system = ActorSystem("CalculatorClientSystem") val calculator = system.actorSelection("akka.tcp://CalculatorSystem@localhost:8080/user/calculator") implicit val timeout = Timeout(5.seconds) val future: Future[Int] = (calculator ? Add(2, 3)).mapTo[Int] val result = Await.result(future, timeout.duration) println(result) } ``` 这个代码创建了一个ActorSystem,并使用actorSelection方法获取到远程服务的ActorRef。然后,使用ask方法向这个Actor发送Add消息,并使用mapTo方法将Future[Int]转换为Int。最后,使用Await.result方法等待结果,并将结果打印出来。 这就是Scala调用RPC服务的基本流程。需要注意的是,这个例子只是一个简单的示例,实际需要根据具体情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值