了解收件箱的发送方法

时间:2016-07-12 17:31:57

标签: java scala akka

我正在阅读akka documentation,现在我正在关于Inbox的部分。这里有什么说的:

  

send方法包装正常tell并提供内部actor   引用作为发件人。

但有什么区别?以这种方式使用tell

ActorRef aRef1;
ActorRef aRef2;
//init the references
aRef1.tell(aRef2, "Message");

我们可以像这样在onRecieve方法中获取发件人:

public void onReceive(Object message) throws Exception {
    System.out.println("Sender: " + getSender().path().name());
}

send相比,tell的实际好处是什么?

1 个答案:

答案 0 :(得分:2)

Inbox的目的是

  

从外面审问的类似演员的对象。

这并不意味着在演员中使用。它适用于可以访问actor系统/上下文并希望向actor发送消息的外部系统。

方法send文档说明

  

让内部参与者充当给定消息的发送者   将被发送到给定的目标。这意味着应该是目标   演员回复然后这些回复将由int* copy_array(int *array, int size) { int *v = (int*) malloc (size * sizeof (int)); //..copy the array.. return v; } 收到。

这允许外部组件表现为演员系统的一部分和来自演员的receive消息。不幸的是,要付出的代价是Inbox正在阻止。