我有三个远程Akka参与者:A,B和C。A向B发送消息,并且B保存了A的引用(请参见下文)。另外,我需要B向A发送对C的引用。我该怎么做? B的Java代码如下所示:
public class B extends UntypedActor {
//---------------------------------------------------------------
/**
* {@inheritDoc}
*/
@Override
public void onReceive(Object object) throws Exception {
if (refA == null) {
refA = getSender();
}
// how do I send refA to C???
refC.tell(refA, getSelf()); // <== like this?
}
// set during onReceive
private ActorRef refA = null;
// initialized in constructor
private final ActorRef refC;
}
我刚刚检查了
ActorRef
是Serializable
,因此从理论上讲,我上面提出的解决方案应该可以工作,但是有没有其他/官方/更清洁的方法呢? 最佳答案
您的解决方案看起来不错,这是常见的事情。 Akka参考旨在实现位置透明和可序列化。因此,您可以将Actor引用发送到远程客户端,它们将直接使用它们而无需任何其他设置。