ReceiveTimeout 是否应用于隐藏的消息

Is ReceiveTimeout applied to stashed messages

假设我有一个具有 2 个状态的抽象 actor

ReadyBusy

在忙碌状态下,我只想接收特定类型的消息,例如 PauseJobCancelJob,所有其他消息如 StartNewJob 都被隐藏起来。

问题:如果我将SetReceiveTimeout()设置为Busy状态,它是否仅适用于我在该状态下实际处理的消息(PauseJobCancelJob) 或隐藏的消息也被考虑?

提前致谢

简而言之,也考虑隐藏消息,因为 actor 在隐藏消息时仍然处于活动状态。

当您使用 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();
    });
}