0
我們在Java中使用Akka時,如果在ask
回調中使用轉發,我們不會得到任何迴應,但是使用tell
時,它可以正常工作。那麼區別是什麼呢?java - 轉發內部Akka演員請求回調
final Message message = Message.builder().build();
final ActorRef sender = getSender();
final ActorContext context = getContext();
PatternsCS.ask(actor, Command.builder().build(),
Timeout.durationToTimeout(Duration.create(5, TimeUnit.SECONDS))).thenAccept(result -> {
// do something with result
...
// 1: Does not work
actor.forward(message, context);
// 2: Does work
actor.tell(message, sender);
});
在調用在第一種情況下getender()
當接收演員計算結果爲DeadLetterActorRef
在它的計算結果爲在ActorRef
傳遞的第二殼體。
那麼爲什麼forward
不能在這裏工作?與tell(message, sender)
有什麼不同?