我正在阅读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
的实际好处是什么?
答案 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
正在阻止。