Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private bool TryStartGrpc()
        {
            try
            {
                // create settings.

                GrpcClientSettings settings = new GrpcClientSettings();

                settings.MarshallerFactory = GrpcMarshallerFactory.DefaultInstance;

                settings.PerformanceListener = new GrpcClientPerformanceListener();

                RegistPerformanceEventHandlers(settings.PerformanceListener);

                // create client.

                ChannelCredentials credential = ChannelCredentials.Insecure;

                m_Channel = new Channel(string.Format("{0}:{1}", m_Settings.ServerName, m_Settings.ServerPort), credential);

                GrpcCallInvoker invoker = GrpcCallInvoker.Create(m_Channel, settings);

                //TestMethodInterceptor interceptor = new TestMethodInterceptor();

                //m_Invoker.AddInvokingInterceptor(interceptor);
                //m_Invoker.AddInvokedInterceptor(interceptor);
                //m_Invoker.AddExceptionHandler(interceptor);

                m_Client = new PlayerSearch.PlayerSearchClient(invoker);

                m_HeartbeatContext = GrpcHeartbeat.CreateClientObject(m_Channel);

                return(true);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(false);
            }
        }
Пример #2
0
        static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder()
        .UseSerilog((host, log) =>
        {
            string appBin = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            log.MinimumLevel.Information();
            log.MinimumLevel.Override("Microsoft", LogEventLevel.Warning);
            log.WriteTo.File($"{appBin}/log/log-{DateTime.Now:yyMMdd_HHmmss}.txt");
            log.WriteTo.Console(LogEventLevel.Debug);
        })
        .ConfigureAppConfiguration((host, config) =>
        {
            config.Sources.Clear();
            config.AddJsonFile("appsettings.json", false);
        })
        .ConfigureServices((host, services) =>
        {
            services.AddSingleton <IGrpcClient <ICourierDispatcher>, CourierDispatcherClient>();

            services.AddSingleton(x =>
            {
                var config = new GrpcClientSettings();

                host.Configuration.Bind("Grpc", config);

                return(config);
            });

            services.AddSingleton(x =>
            {
                var config = new RabbitMqTransportSettings();

                host.Configuration.Bind("RabbitMqTransport", config);

                return(config);
            });

            services.AddSingleton(x =>
            {
                var config = new CourierServiceSettings();

                host.Configuration.Bind("Application", config);

                return(config);
            });

            services.AddMassTransit(x =>
            {
                x.SetKebabCaseEndpointNameFormatter();

                x.AddConsumer(typeof(DispatchConsumer), typeof(DispatchConsumerDefinition));
                x.AddConsumer(typeof(DispatchConfirmationConsumer), typeof(DispatchConfirmationConsumerDefinition));
                x.AddConsumer(typeof(OrderDeliveryConsumer), typeof(OrderDeliveryConsumerDefinition));
                x.AddConsumer(typeof(PickUpOrderConsumer), typeof(PickUpOrderConsumerDefinition));
                x.AddConsumer(typeof(EnRouteToRestaurantConsumer), typeof(EnRouteToRestaurantConsumerDefinition));
                x.AddConsumer(typeof(DispatchDeclinedConsumer), typeof(DispatchDeclinedConsumerDefinition));
                x.AddConsumer(typeof(EnRouteToCustomerConsumer), typeof(EnRouteToCustomerConsumerDefinition));
                x.AddConsumer(typeof(DispatchIdentificationConsumer), typeof(DispatchIdentificationConsumerDefinition));
                x.AddConsumer(typeof(DispatchCancellationConsumer), typeof(DispatchCancellationConsumerDefinition));

                x.AddSagaStateMachine(typeof(CourierStateMachine), typeof(CourierStateDefinition));

                Uri schedulerEndpoint = new Uri("queue:quartz");

                x.AddMessageScheduler(schedulerEndpoint);

                x.UsingRabbitMq((context, cfg) =>
                {
                    var settings = context.GetService <RabbitMqTransportSettings>();

                    cfg.Host(settings.Host, settings.VirtualHost, h =>
                    {
                        h.Username(settings.Username);
                        h.Password(settings.Password);
                    });

                    cfg.UseMessageScheduler(schedulerEndpoint);

                    cfg.ConfigureEndpoints(context);
                    // cfg.UseMessageRetry(x => x.SetRetryPolicy(new RetryPolicyFactory()));
                });

                x.AddSagaStateMachine <CourierStateMachine, CourierState>()
                .EntityFrameworkRepository(r =>
                {
                    r.ConcurrencyMode = ConcurrencyMode.Optimistic;

                    r.AddDbContext <DbContext, CourierServiceDbContext>((provider, builder) =>
                    {
                        builder.UseNpgsql(host.Configuration.GetConnectionString("OrdersConnection"), m =>
                        {
                            m.MigrationsAssembly(Assembly.GetExecutingAssembly().GetName().Name);
                            m.MigrationsHistoryTable($"__{nameof(CourierServiceDbContext)}");
                        });
                    });
                });
            });

            services.AddMassTransitHostedService();
        });
Пример #3
0
 public BaseGrpcClient(GrpcClientSettings settings)
 {
     _settings = settings;
     _channel  = GrpcChannel.ForAddress(_settings.ClientUrl);
 }
Пример #4
0
 public OrderProcessorClient(GrpcClientSettings settings)
     : base(settings)
 {
 }
 public CourierDispatcherClient(GrpcClientSettings settings)
     : base(settings)
 {
 }