private static void Main(string[] args) { // 1. 引用 Interfaces 类库和 Service Fabric 类库 // 2. 创建客户端,这里使用的是非安全的方式,在网络隔离的情况下, // 客户端和服务端可以使用非安全方式通信 ICounterService counterService = ServiceProxy.Create <ICounterService>( new Uri("fabric:/CounterDemo/CounterStateless")); //FabricTransportSettings fabricTransportSettings = new FabricTransportSettings //{ // // 仅是设置单次的重试时间,如果设置为 2 秒,可以重现错误,抛出 System.TimeoutException // OperationTimeout = TimeSpan.FromMinutes(5) //}; //// 这样设置重试的次数,从而控制整体超时时间 //// 部分内置错误会无限重试,参考 IExceptionHandler //// 如果遇到错误,会再重试 defaultMaxRetryCount 次 //OperationRetrySettings operationRetrySettings = new OperationRetrySettings(TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10), 3); ////ServiceProxyFactory serviceProxyFactory = new ServiceProxyFactory(c => //// new FabricTransportServiceRemotingClientFactory(fabricTransportSettings), operationRetrySettings); //ServiceProxyFactory serviceProxyFactory = new ServiceProxyFactory(c => // new FabricTransportServiceRemotingClientFactory(fabricTransportSettings, null, null, new[] { new MyExceptionHandler() }), operationRetrySettings); //ICounterService counterService = serviceProxyFactory.CreateServiceProxy<ICounterService>( // new Uri("fabric:/CounterDemo/CounterStateless")); counterService.ResetAsync().Wait(); do { try { Console.WriteLine(counterService.CountAsync().Result); } catch (Exception e) { Console.WriteLine(e); } } while (true); }
private static void Main(string[] args) { // 1. 引用 Interfaces 类库和 Service Fabric 类库 // 2. 创建客户端,这里使用的是非安全的方式,在网络隔离的情况下, // 客户端和服务端可以使用非安全方式通信 string command = Console.ReadKey().KeyChar.ToString().ToLowerInvariant(); Console.WriteLine(); if (command == "0") { ICounterService counterService = ServiceProxy.Create <ICounterService>( new Uri("fabric:/CounterDemo/CounterStateful"), ServicePartitionKeyFactory.Build(0)); counterService.ResetAsync().Wait(); ICounterService shService = ServiceProxy.Create <ICounterService>( new Uri("fabric:/CounterDemo/CounterStateful"), ServicePartitionKeyFactory.Build("Shanghai")); ICounterService bjService = ServiceProxy.Create <ICounterService>( new Uri("fabric:/CounterDemo/CounterStateful"), ServicePartitionKeyFactory.Build("Beijing")); shService.ResetAsync().Wait(); bjService.ResetAsync().Wait(); } if (command == "1") { ICounterService counterService = ServiceProxy.Create <ICounterService>( new Uri("fabric:/CounterDemo/CounterStateful"), ServicePartitionKeyFactory.Build(0)); do { try { Console.WriteLine(counterService.CountAsync().Result); } catch (Exception e) { Console.WriteLine(e); } } while (true); } if (command == "2") { ICounterService shService = ServiceProxy.Create <ICounterService>( new Uri("fabric:/CounterDemo/CounterStateful"), ServicePartitionKeyFactory.Build("Shanghai")); ICounterService bjService = ServiceProxy.Create <ICounterService>( new Uri("fabric:/CounterDemo/CounterStateful"), ServicePartitionKeyFactory.Build("Beijing")); do { try { Console.WriteLine(shService.CountAsync().Result); Console.WriteLine(shService.CountAsync().Result); Console.WriteLine(bjService.CountAsync().Result); } catch (Exception e) { Console.WriteLine(e); } } while (true); } }