ReceiveTimeout 是否应用于隐藏的消息
Is ReceiveTimeout applied to stashed messages
假设我有一个具有 2 个状态的抽象 actor
Ready
和 Busy
。
在忙碌状态下,我只想接收特定类型的消息,例如 PauseJob
、CancelJob
,所有其他消息如 StartNewJob
都被隐藏起来。
问题:如果我将SetReceiveTimeout()
设置为Busy状态,它是否仅适用于我在该状态下实际处理的消息(PauseJob
,CancelJob
) 或隐藏的消息也被考虑?
提前致谢
简而言之,也考虑隐藏消息,因为 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();
});
}
假设我有一个具有 2 个状态的抽象 actor
Ready
和 Busy
。
在忙碌状态下,我只想接收特定类型的消息,例如 PauseJob
、CancelJob
,所有其他消息如 StartNewJob
都被隐藏起来。
问题:如果我将SetReceiveTimeout()
设置为Busy状态,它是否仅适用于我在该状态下实际处理的消息(PauseJob
,CancelJob
) 或隐藏的消息也被考虑?
提前致谢
简而言之,也考虑隐藏消息,因为 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();
});
}