我有一个远程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
,但我想知道是否有更简单的方法?
答案 0 :(得分:1)
从对scala用户邮件列表的讨论来看,如果不使用某种替代类型的客户端标识符(如UUID
),这似乎不可能立即实现。如果您在注册对象中从客户端发送self
引用,则会出现ObjectNotSerializable
错误。
答案 1 :(得分:0)
明确地将发件人添加到您的邮件中。使用RemoteActor.select获取scala.actors.remote.Proxy。使用其toString方法识别发件人。