60 lines
1.8 KiB
C#
60 lines
1.8 KiB
C#
using Autofac;
|
|
using Autofac.Extensions.DependencyInjection;
|
|
using Jambo.Consumer.Application.DomainEventHandlers.Blogs;
|
|
using Jambo.Consumer.Infrastructure.Modules;
|
|
using Jambo.Domain.ServiceBus;
|
|
using MediatR;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using System;
|
|
using System.Reflection;
|
|
using System.Threading;
|
|
|
|
namespace Jambo.Consumer.Infrastructure
|
|
{
|
|
public class Startup
|
|
{
|
|
public Startup(IConfiguration configuration)
|
|
{
|
|
Configuration = configuration;
|
|
}
|
|
|
|
public IConfiguration Configuration { get; }
|
|
|
|
IServiceProvider serviceProvider;
|
|
|
|
public IServiceProvider ConfigureServices(IServiceCollection services)
|
|
{
|
|
services.AddMediatR(typeof(BlogCreatedEventHandler).GetTypeInfo().Assembly);
|
|
|
|
ContainerBuilder container = new ContainerBuilder();
|
|
container.Populate(services);
|
|
|
|
container.RegisterModule(new ApplicationModule(
|
|
Configuration.GetSection("MongoDB").GetValue<string>("ConnectionString"),
|
|
Configuration.GetSection("MongoDB").GetValue<string>("Database")));
|
|
|
|
container.RegisterModule(new BusModule(
|
|
Configuration.GetSection("ServiceBus").GetValue<string>("ConnectionString"),
|
|
Configuration.GetSection("ServiceBus").GetValue<string>("Topic")));
|
|
|
|
serviceProvider = new AutofacServiceProvider(container.Build());
|
|
|
|
return serviceProvider;
|
|
}
|
|
|
|
public void Run()
|
|
{
|
|
IMediator mediator = serviceProvider.GetService<IMediator>();
|
|
ISubscriber subscriber = serviceProvider.GetService<ISubscriber>();
|
|
|
|
subscriber.Listen(mediator);
|
|
|
|
while (true)
|
|
{
|
|
Thread.Sleep(1000 * 60);
|
|
}
|
|
}
|
|
}
|
|
}
|