Newer
Older
RussianDoll / Program.cs
@Derek Comartin Derek Comartin on 18 Aug 2021 1 KB Init
using System;
using Microsoft.Extensions.DependencyInjection;
using Paramore.Brighter;

namespace PipesAndFilters
{
    class Program
    {
        static void Main(string[] args)
        {
            var serviceCollection = new ServiceCollection();
            serviceCollection.AddTransient<PlaceOrderHandler>();
            serviceCollection.AddTransient<LoggingHandler<PlaceOrderCommand>>();
            serviceCollection.AddTransient<ValidationHandler<PlaceOrderCommand>>();
            serviceCollection.AddTransient<RetryHandler<PlaceOrderCommand>>();
            var serviceProvider = serviceCollection.BuildServiceProvider();

            var registry = new SubscriberRegistry();
            registry.Register<PlaceOrderCommand, PlaceOrderHandler>();

            var builder = CommandProcessorBuilder.With()
                .Handlers(new HandlerConfiguration(
                    subscriberRegistry: registry,
                    handlerFactory: new HandlerFactory(serviceProvider)
                ))
                .DefaultPolicy()
                .NoTaskQueues()
                .RequestContextFactory(new InMemoryRequestContextFactory());

            var commandProcessor = builder.Build();
            commandProcessor.Send(new PlaceOrderCommand(Guid.NewGuid()));
        }
    }


}