Example #1
0
        static async Task Main()
        {
            var serviceCollection = new ServiceCollection();

            serviceCollection.AddLogging();
            serviceCollection.AddNatsRpc(config => config.AddContractHandler <ITest, Test>());
            var provider    = serviceCollection.BuildServiceProvider();
            var serviceHost = provider.GetRequiredService <IHostedService>();
            var cts         = new System.Threading.CancellationTokenSource();
            var token       = cts.Token;

            await serviceHost.StartAsync(token);

            var connectionFactory = new ConnectionFactory();
            var proxyFactory      = new ProxyFactory(connectionFactory);
            var proxy             = proxyFactory.Create <ITest>(ProxyOptions.Default);

            var response = proxy.Echo("Hello World!");

            System.Console.WriteLine($"Echo response: {response}");

            proxy.Rpc("RPC", 100);

            var responseTask = proxy.EchoAsync("Hello World Async!");

            System.Console.WriteLine($"Echo response: {await responseTask}");

            await proxy.RpcAsync("Async RPC", 101);

            var model = new ITest.TestModel()
            {
                Name = "TEST"
            };

            var echoModel = await proxy.EchoModel(model);

            System.Console.WriteLine($"Async echo model: {echoModel.Name}");

            System.Console.ReadLine();

            proxy.Dispose();

            await serviceHost.StopAsync(token);

            cts.Cancel();
            cts.Dispose();
        }
Example #2
0
 public Task <ITest.TestModel> EchoModel(ITest.TestModel testModel)
 {
     return(Task.FromResult(testModel));
 }