实施以下示例的最佳方法是什么?
演员server
收到Requests
,
处理它们,创建一个新的Response
对于每个Request
并发送Response
到Request
发件人。
演员client
发送Requests
和
收到Responses
。
所有这些通信都是异步的,因此使用react
。
这只是一个例子,所以它不应该处理所有这些情况,例如server
失效,client
被卡住等等。它应该只是简洁和富有表现力。
答案 0 :(得分:8)
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))
}
}
}
用法:
scala> client ! SendRequest("Hello!")
Server got request [Hello!] from client
Client got response [Hello!] from server
关于:
所有这些通信都是异步的 因此它使用反应。
使用receive
的参与者也是异步的。他们只是阻止线程,等待新消息。