2016-08-18 3 views
1

Я могу подписаться на DeadLetters, используя этот синтаксис в Akka.Net V 1.0.8Поймать DeadLetters Akka.NET V 1.1.0

Cluster.Get(Context.System).Subscribe(Self, ClusterEvent.InitialStateAsEvents, new[] { typeof(DeadLetter)}); 

Но когда я пытаюсь использовать этот же синтаксис в V 1.1.0, я получите следующее исключение!

Исключение типа 'System.ArgumentException' произошло в Akka.Cluster.dll, но не был обработан в пользовательском коде

Дополнительная информация: Подписка на IClusterDomainEvent или подклассов, был [DeadLetter]

ответ

3

Подписка на кластер используется для приема событий, связанных с жизненным циклом кластера. Мертвые буквы (как и другие сообщения журнала) публикуются в шине событий, поэтому вам нужно подписаться на нее, используя Context.System.EventStream.Subscribe(Self, typeof (DeadLetter)).

Принимайте во внимание, что автобус для событий может быть подписан только на местном уровне, от актеров, живущих внутри одной и той же системы актеров.

+0

я могу получить deadletters, подписавшись как это, но когда я пытаюсь получить сообщение, что я получаю что-то вроде этого: ** MSG:. Akka.Cluster.ClusterHeartbeatSender + Heartbeat ** Как я могу получить реальное сообщение который был отправлен? – Vegeta

+1

@Thickar http://api.getakka.net/docs/stable/html/AAC2550B.htm - вы можете получить реальное сообщение, используя свойство 'Message' на' DeadLetter' – Aaronontheweb