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)
有什么不同?