是ReceiveTimeout应用到藏匿的消息
问题描述:
比方说,我有2个状态是ReceiveTimeout应用到藏匿的消息
Ready
和Busy
抽象的演员。
在忙碌状态下,我只想接收特定类型的消息,例如PauseJob
,CancelJob
,所有其他消息如StartNewJob
都被隐藏。
问:如果我忙碌状态设置SetReceiveTimeout()
,它是在这种状态下只适用于邮件,我居然过程(PauseJob
,CancelJob
)或藏匿的消息也算?
在此先感谢
答
总之,藏匿的消息也被认为是因为演员仍处于活动状态,而它的积攒的消息。
当您使用SetRecieveTimeout()
时,如果actor在指定的时间内没有收到任何消息,则会发送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();
});
}
谢谢,它似乎不可能设置只接收特定消息类型的接收超时,将不得不手动实现它 –