我有三个远程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;
}


我刚刚检查了ActorRefSerializable,因此从理论上讲,我上面提出的解决方案应该可以工作,但是有没有其他/官方/更清洁的方法呢?

最佳答案

您的解决方案看起来不错,这是常见的事情。 Akka参考旨在实现位置透明和可序列化。因此,您可以将Actor引用发送到远程客户端,它们将直接使用它们而无需任何其他设置。

08-28 17:19