public async Task <bool> ProcessMessageAsync(MessageModel message) { var messageType = message.MessageType; IList <Task> tasks = new List <Task>(); if ((messageType & MessageType.Email) == MessageType.Email) { IEmailProcessor processor = ActorProxy.Create <IEmailProcessor>(ActorId.CreateRandom(), applicationName: "ServiceFabricTestApp", serviceName: "EmailProcessorActorService"); tasks.Add(processor.SendEmailAsync(message)); } if ((messageType & MessageType.Push) == MessageType.Push) { IPushProcessor processor = ActorProxy.Create <IPushProcessor>(ActorId.CreateRandom(), applicationName: "ServiceFabricTestApp", serviceName: "PushProcessorActorService"); tasks.Add(processor.SendPushAsync(message)); } if ((messageType & MessageType.SMS) == MessageType.SMS) { ISMSProcessor processor = ActorProxy.Create <ISMSProcessor>(ActorId.CreateRandom(), applicationName: "ServiceFabricTestApp", serviceName: "SMSProcessorActorService"); tasks.Add(processor.SendSMSAsync(message)); } await Task.WhenAll(tasks); return(true); }