public void RegisterSelf(IEnumerable <MessageRoute> registrations, string domain) { var receiverRoutes = registrations.GroupBy(r => r.Receiver) .Select(g => new { ReceiverIdentifier = g.Key.Identity, Messages = g.Key.IsActor() ? g.Select(x => x.Message) : Enumerable.Empty <MessageIdentifier>() }) .Select(r => new RouteRegistration { ReceiverIdentity = r.ReceiverIdentifier, MessageContracts = r.Messages.Select(m => new MessageContract { Identity = m.Identity, Partition = m.Partition, Version = m.Version }) .ToArray() }).ToArray(); var scaleOutAddress = scaleOutConfigurationProvider.GetScaleOutAddress(); var message = Message.Create(new RegisterExternalMessageRouteMessage { Uri = scaleOutAddress.Uri.ToSocketAddress(), NodeIdentity = scaleOutAddress.Identity, Health = new Messaging.Messages.Health { Uri = heartBeatConfigurationProvider.GetHeartBeatAddress() .ToSocketAddress(), HeartBeatInterval = heartBeatConfigurationProvider.GetHeartBeatInterval() }, Routes = receiverRoutes }) .As <Message>(); message.SetDomain(domain); message.SignMessage(securityProvider); autoDiscoverySender.EnqueueMessage(message); }