В Акке. NET каждый актер имеет свою очередь сообщений, используемую для упорядочивания входящих запросов. Есть несколько способов сделать это:
Самый простой способ - создать свой собственный абстрактный тип актера, используемый всеми другими субъектами в вашей системе, и переопределить его AroundReceive метод - это позволит вам чтобы обернуть наследующие субъекты обработчики получения с любым видом логики c вы хотите:
class AppActor : ActorBase
{
protected readonly ILoggingAdapter logger = Context.GetLogger();
protected override bool AroundReceive(Receive receive, object message)
{
logger.Debug("Incoming request: {0}", message);
return receive(message);
}
}
Это также будет означать, что вам нужен отдельный тип для каждого другого варианта акторов, используемых в вашей системе, таких как получение актеры или постоянные актеры.
Если вы хотите нестандартное решение - есть коммерческий инструмент под названием Фобос , который может собирать метрики всех сообщений в полете внутри вашей актерской системы. их и даже проследить причинно-следственную связь между ними (отслеживание).