2016-11-18 3 views
0

を隠しに適用されますのは、私が2つの状態ReceiveTimeoutというメッセージ

ReadyBusyと抽象俳優を持っているとしましょう。

ビジー状態では、特定の種類のメッセージのみを受信したいとします。例えば、PauseJobCancelJob、他のすべてのメッセージはStartNewJobです。

質問:私がビジー状態でSetReceiveTimeout()を設定した場合、それはこの状態で、私は実際にはプロセス(PauseJobCancelJob)メッセージにのみ適用されるか、メッセージが隠されているにも考えられていますか?要するに、事前

答えて

0

おかげで、それはメッセージをスタッシュている間の俳優がまだアクティブであるため、メッセージも考慮されている隠し。

SetRecieveTimeout()を使用すると、俳優が指定された時間量のメッセージを受信しなかったときに、RecieveTimeoutメッセージが送信されます。

private void Busy() 
{ 
    SetReceiveTimeout(TimeSpan.FromSeconds(1)); 

    Receive<PauseJob>(msg => 
    { 
     // Do something 
    }); 

    Receive<ReceiveTimeout>(timeout => 
    { 
     // I won't run until 1 second after 
     // all messages are processed or stashed 
    }); 

    ReceiveAny(msg => 
    { 
     Stash.Stash(); 
    }); 
} 
+0

ありがとうございます。特定のメッセージタイプに対してのみ受信タイムアウトを設定することは不可能なようですが、手動で実装する必要があります –

関連する問題