如何识别远程演员?

时间:2009-06-29 13:53:25

标签: scala actor remote-actors

我有一个远程actor(客户端),它正在向另一个远程actor(服务器)注册,然后取消注册(使用shutdown hook)。但是,虽然服务器选择取消注册,但实际的 sender 属性是不同的Channel对象;所以在我的服务器日志中我有:

  

Registered new client [scala.actors.Channel@158e282]; supporting 1 clients
  De-registered client [scala.actors.Channel@1caf0b6]; supporting 1 clients

如何确定(在服务器端)这是最初在我这里注册的客户端演员?显然我可以为每个客户注入自己的UUID,但我想知道是否有更简单的方法?

2 个答案:

答案 0 :(得分:1)

从对scala用户邮件列表的讨论来看,如果不使用某种替代类型的客户端标识符(如UUID),这似乎不可能立即实现。如果您在注册对象中从客户端发送self引用,则会出现ObjectNotSerializable错误。

答案 1 :(得分:0)

明确地将发件人添加到您的邮件中。使用RemoteActor.select获取scala.actors.remote.Proxy。使用其toString方法识别发件人。