public static async Task <Noop> SendMessage(string destinationService, ServiceMessage2 message)
        {
            var client               = new FabricClient(FabricClientRole.Admin);
            var resolver             = ServicePartitionResolver.GetDefault();
            var serviceUri           = new Uri(FabricRuntime.GetActivationContext().ApplicationName + "/" + destinationService);
            var communicationFactory = new GrpcCommunicationClientFactory <Common.Grpc.GrpcMessageService.GrpcMessageServiceClient>(null, resolver);
            var partitionList        = await client.QueryManager.GetPartitionListAsync(serviceUri);

            foreach (var partition in partitionList)
            {
                long partitionKey    = ((Int64RangePartitionInformation)partition.PartitionInformation).HighKey;
                var  partitionClient = new ServicePartitionClient <GrpcCommunicationClient <Common.Grpc.GrpcMessageService.GrpcMessageServiceClient> >(communicationFactory, serviceUri, new ServicePartitionKey(partitionKey), listenerName: "grpc");
                var  reply           = partitionClient.InvokeWithRetry((communicationClient) => communicationClient.Client.Send(message));
            }

            return(new Noop());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// This is the main entry point for your service instance.
        /// </summary>
        /// <param name="cancellationToken">Canceled when Service Fabric needs to shut down this service instance.</param>
        protected override async Task RunAsync(CancellationToken cancellationToken)
        {
            long iterations           = 0;
            var  resolver             = ServicePartitionResolver.GetDefault();
            var  serviceUri           = new Uri(FabricRuntime.GetActivationContext().ApplicationName + "/Service");
            var  communicationFactory = new GrpcCommunicationClientFactory <Greeter.GreeterClient>(null, resolver);

            var partitionClient = new ServicePartitionClient <GrpcCommunicationClient <Greeter.GreeterClient> >(communicationFactory, serviceUri, ServicePartitionKey.Singleton);

            while (!cancellationToken.IsCancellationRequested)
            {
                var reply = partitionClient.InvokeWithRetry((communicationClient) => communicationClient.Client.SayHello(new HelloRequest {
                    Name = $"{++iterations}"
                }));

                ServiceEventSource.Current.ServiceMessage(this.Context, "Client Received: {0}", reply.Message);

                await Task.Delay(TimeSpan.FromSeconds(5), cancellationToken);
            }
        }