public static IHostBuilder CreateHostBuilder(string[] args)
        {
            return(Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((hostingContext, config) =>
            {
                config.AddJsonFile("appsettings.json", true, true);
                config.AddEnvironmentVariables();

                if (args != null)
                {
                    config.AddCommandLine(args);
                }
            })
                   .ConfigureServices((hostContext, services) =>
            {
                services.AddOptions();

                var massTransitSettings = hostContext.Configuration.GetSection("MassTransitSettings")
                                          .Get <MassTransitSettings>();
                services.AddSingleton(massTransitSettings);

                OrderDbSettings orderDbSettings = new OrderDbSettings();
                hostContext.Configuration.GetSection(nameof(OrderDbSettings)).Bind(orderDbSettings);
                services.AddSingleton(orderDbSettings);

                services.AddDbContext <OrderDbContext>(c =>
                                                       c.UseSqlServer(orderDbSettings.ConnectionStrings), ServiceLifetime.Transient);

                var bus = BusConfigurator.Instance
                          .ConfigureBus(massTransitSettings, (cfg) =>
                {
                    cfg.ReceiveEndpoint(nameof(OrderCompletedEventModel), e =>
                    {
                        var context = services.BuildServiceProvider().GetService <OrderDbContext>();
                        e.Consumer(() => new OrderCompletedConsumer(context));
                    });

                    cfg.ReceiveEndpoint(nameof(OrderCreatedEventModel), e =>
                    {
                        e.Consumer(() => new OrderCreatedConsumer());
                    });

                    cfg.ReceiveEndpoint(nameof(OrderFailedEventModel), e =>
                    {
                        var context = services.BuildServiceProvider().GetService <OrderDbContext>();
                        e.Consumer(() => new OrderFailedConsumer(context));
                    });
                });

                bus.StartAsync();

                Console.WriteLine("Listening order completed event..");
                Console.ReadLine();
            }));
        }
Exemple #2
0
        public static IServiceCollection AddOrder(this IServiceCollection services, IConfiguration configuration)
        {
            OrderDbSettings orderDbSettings = new OrderDbSettings();

            configuration.GetSection(nameof(OrderDbSettings)).Bind(orderDbSettings);
            services.AddSingleton(orderDbSettings);

            services.AddDbContext <OrderDbContext>(c =>
                                                   c.UseSqlServer(orderDbSettings.ConnectionStrings), ServiceLifetime.Transient);

            return(services);
        }
Exemple #3
0
 public OrderRepository(IOptions <OrderDbSettings> settings)
 {
     _settings = settings.Value;
 }