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()));
}
}
}