是否有任何指南或教程解释了远程使用斯卡拉演员的可能性?我到目前为止所发现的只是一个例子(没有评论),但这还不够。斯卡拉远程演员
斯卡拉远程演员
回答
前段时间我写了an article with an example app to explain the use of Remote Actors。
那么,它没有代码内的注释(也许你甚至指的是文章),但下面的代码解释。
还有一个基于我的代码的新例子,但更简单,它手动设置类路径,它可以避免问题:http ://youshottheinvisibleswordsman.co.uk/2009/04/01/remoteactor-in-scala/ – dmeister 2009-04-11 16:55:33
dmeister你的博客发生了什么? – 2009-06-16 07:28:03
我没有意识到这一点。这几乎是“穿越丛林”的方式。从API来看,事情应该和普通演员的工作基本相同,因为它有一两个教程(现在还有一些书)。
如果您确实使用了远程参与者,我们(社区)肯定会欢迎有经验的用户提供这样的教程!
只要注意发送可序列化的消息(案例类和案例对象!),并确保对方可以创建类。 注意自定义类加载器或缺少类路径中的JAR。
Akka框架有remote actors。这个API和普通的scala actor非常相似。
它们提供了一定程度的自动聚类,但它并不完整。
最近有www.scala-lang.org的头版上增加了一个指南,这里是链接 http://www.scala-lang.org/docu/files/actors-api/actors_api_guide.html#
也许这是一个necropost,但我一直在寻找全国各地,并不能找到太多。希望这会帮助某人。
我正在运行Mac OS 10.6.8和Scala 2.9.0.1。我在运行规范的远程演员示例时遇到了问题。我结束了以下代码。
说明:明确方法只是为了防止消息堆积。这个例子并不重要。同样,调用Thread.sleep只是为了更容易地看到运行时发生了什么。
编译它,然后在单独的壳实例做:
$> scala Ping
和
$> scala Pong
以任何顺序
。您可以通过一次查杀其中一个并追踪代码来进行试验。
import scala.actors._
import scala.actors.Actor._
import scala.actors.remote._
import scala.actors.remote.RemoteActor._
/** @author Connor Doyle */
// Remote messages must be serializable.
// The easist way to do this is to wrap
// them with a case class
case class Message(text: String)
abstract class PingPongActor extends Actor with App {
val pingPort = 9000
val pongPort = 9001
val delay = 1000
classLoader = getClass().getClassLoader() // hack!
start
// this method consumes all pending messages
// the library should have implemented an atomic
// receiveAndClear operation
def clear: Unit = receiveWithin(0) {
case TIMEOUT =>()
case _ => clear
}
}
object Ping extends PingPongActor {
// result of select already lazy, but explicit lazy conveys
// semantics clearly
lazy val pong = select(Node("localhost", pongPort), 'pong)
def act = {
alive(pingPort)
register('ping, self)
loop {
pong ! Message("ping")
receiveWithin(delay * 2) {
case Message(text: String) => {
clear
println("received: "+text)
Thread.sleep(delay) // wait a while
}
case TIMEOUT => println("ping: timed out!")
}
}
}
}
object Pong extends PingPongActor {
lazy val ping = select(Node("localhost", pingPort), 'ping)
def act = {
alive(pongPort)
register('pong, self)
loop {
receiveWithin(delay * 2) {
case Message(text: String) => {
println("received: "+text)
Thread.sleep(delay) // wait a while
clear
ping ! Message("pong")
}
case TIMEOUT => println("pong: timed out")
}
}
}
}
干杯!
- 1. 斯卡拉远程演员异常
- 2. 将简单的斯卡拉远程演员示例移植到阿卡演员
- 3. 斯卡拉2.8Beta1演员
- 4. 单身斯卡拉演员?
- 5. 斯卡拉演员左挂
- 6. 斯卡拉演员线程控制
- 7. 斯卡拉远程演员消息类型的灾难
- 8. 斯卡拉演员和工作人员
- 9. 斯卡拉演员 - 最差的做法?
- 10. 单元测试斯卡拉演员
- 11. 在Android上的斯卡拉演员
- 12. 斯卡拉演员智能路由
- 13. 使用斯卡拉演员的麻烦
- 14. 斯卡拉演员消息定义
- 15. 垃圾回收斯卡拉演员
- 16. 斯卡拉演员和共享状态
- 17. 从Java多线程到斯卡拉阿卡演员
- 18. 斯卡拉/阿卡/吉斯动态注入儿童演员
- 19. 谈到斯卡拉演员阿卡演员:一个实例调用方法在
- 20. 阿卡的演员与斯卡拉的演员模型有什么区别
- 21. 斯卡拉矩阵反演
- 22. 从java线程移动到斯卡拉演员
- 23. 阿卡发送关闭远程演员
- 24. 在阿卡·斯卡拉演员中使用单身人士
- 25. 斯卡拉阿卡演员的行为()函数
- 26. 播放斯卡拉阿卡的WebSockets改变演员路径
- 27. 斯卡拉阿卡:如何更新“奴隶”演员的状态
- 28. 是否有任何斯卡拉网络库与演员模型
- 29. 实例化和在地图开始斯卡拉演员
- 30. 在斯卡拉演员的二进制搜索实现?
最近的文档:http://docs.scala-lang.org/overviews/core/actors.html#remote_actors – ekillaby 2013-06-09 20:53:28