2016-07-12 10 views
0

私はakka documentationを読んでいますが、現在は約Inboxのセクションにあります。ここではそこに何を言われています:受信トレイの送信方法の理解

send方法は、通常のtellをラップし、送信者などの内部俳優の リファレンスを提供します。

違いは何ですか? tellこのよう使用時:

​​

を、私たちは、このようなonRecieve方法で送信者を得ることができます:

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

だけtellと比較してsendの実際の利点は何ですか?

答えて

2

Inboxの目的は

外部から問い合わせされるアクターのようなオブジェクトを有することです。

これは、俳優の中で使用されることを意味しません。アクターシステム/コンテキストにアクセスし、アクターにメッセージを送信したい外部システム用です。

方法sendドキュメント状態

が与えられたターゲットに送信されます与えられたメッセージの送信者として内部の俳優の行為を持っています。これは、ターゲット 俳優の返信が返された場合、返信はInboxで受信されることを意味します。

これにより、外部コンポーネントはアクターシステムの一部であるかのように動作し、アクターからのメッセージはreceiveとなります。残念ながら、これに支払う価格はreceiveがブロックされていることです。

+0

ただし、タイムアウトは指定できず、受信はすぐに戻ります。 – user3663882

+1

@ user3663882メソッドは 'FiniteDuration'引数を期待しています。 'FiniteDuration#Zero()'を提供することができますが、返信がまだ受信されていない場合、メソッドは 'TimeoutException'をスローします。 –

関連する問題