实现以下示例的最佳方法是什么?
Actor server接收Requests,处理它们,Response
为每个创建一个新的Request并将其发送Response回Request发送方.
演员client发送Requests和接收Responses.
所有这些通信都是异步的,因此它使用react.
这只是一个例子,所以它不应该处理所有这些情况,如server下降,client卡住等.它应该只是简洁和富有表现力.
import scala.actors._
import Actor._
case class SendRequest(rid: String)
case class Request(rid: String)
case class Response(rid: String)
val server = actor {
eventloop {
case Request(rid) =>
println("Server got request [%s] from client" format(rid))
sender ! Response(rid)
}
}
}
val client = actor {
eventloop {
case SendRequest(rid) => server ! Request(rid)
case Response(rid) =>
println("Client got response [%s] from server" format(rid))
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
scala> client ! SendRequest("Hello!")
Server got request [Hello!] from client
Client got response [Hello!] from server
Run Code Online (Sandbox Code Playgroud)
关于:
所有这些通信都是异步的,因此它使用反应.
使用的Actor receive也是异步的.他们只是阻止线程,等待新消息.
| 归档时间: |
|
| 查看次数: |
1749 次 |
| 最近记录: |