static void Main() { Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .Enrich.FromLogContext() .WriteTo.Console() .CreateLogger(); var serviceCollection = new ServiceCollection(); var messagingConfiguration = new MsSqlMessagingGatewayConfiguration(@"Database=BrighterSqlQueue;Server=.\sqlexpress;Integrated Security=SSPI;", "QueueData"); var producer = new MsSqlMessageProducer(messagingConfiguration); serviceCollection.AddBrighter(options => { var outBox = new InMemoryOutbox(); options.BrighterMessaging = new BrighterMessaging(outBox, outBox, producer, null); }).AutoFromAssemblies(); var serviceProvider = serviceCollection.BuildServiceProvider(); var commandProcessor = serviceProvider.GetService <IAmACommandProcessor>(); commandProcessor.Post(new GreetingEvent("Ian")); }
static void Main() { Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .Enrich.FromLogContext() .WriteTo.Console() .CreateLogger(); var serviceCollection = new ServiceCollection(); serviceCollection.AddSingleton <ILoggerFactory>(new SerilogLoggerFactory()); var messagingConfiguration = new MsSqlConfiguration(@"Database=BrighterSqlQueue;Server=.\sqlexpress;Integrated Security=SSPI;", queueStoreTable: "QueueData"); var producer = new MsSqlMessageProducer(messagingConfiguration); serviceCollection.AddBrighter() .UseInMemoryOutbox() .UseExternalBus(producer) .AutoFromAssemblies(); var serviceProvider = serviceCollection.BuildServiceProvider(); var commandProcessor = serviceProvider.GetService <IAmACommandProcessor>(); commandProcessor.Post(new GreetingEvent("Ian")); }
static void Main() { var container = new TinyIoCContainer(); var messageMapperFactory = new TinyIoCMessageMapperFactory(container); var messageMapperRegistry = new MessageMapperRegistry(messageMapperFactory) { { typeof(GreetingEvent), typeof(GreetingEventMessageMapper) } }; var messageStore = new InMemoryMessageStore(); var messagingConfiguration = new MsSqlMessagingGatewayConfiguration(@"Database=BrighterSqlQueue;Server=.\sqlexpress;Integrated Security=SSPI;", "QueueData"); var producer = new MsSqlMessageProducer(messagingConfiguration); var builder = CommandProcessorBuilder.With() .Handlers(new HandlerConfiguration()) .DefaultPolicy() .TaskQueues(new MessagingConfiguration((IAmAMessageStore <Message>)messageStore, producer, messageMapperRegistry)) .RequestContextFactory(new InMemoryRequestContextFactory()); var commandProcessor = builder.Build(); commandProcessor.Post(new GreetingEvent("Ian")); }
private static CommandProcessor BuildCommandProcessor() { var messageStore = new InMemoryMessageStore(); var container = new UnityContainer(); var messageMapperFactory = new UnityMessageMapperFactory(container); var messageMapperRegistry = new MessageMapperRegistry(messageMapperFactory) { { typeof(GreetingEvent), typeof(GreetingEventMessageMapper) } }; var connectionString = @"Database=BrighterSqlQueue;Server=localhost;Integrated Security=SSPI;"; var gatewayConfig = new MsSqlMessagingGatewayConfiguration(connectionString, "QueueData"); var producer = new MsSqlMessageProducer(gatewayConfig); var builder = CommandProcessorBuilder.With() .Handlers(new HandlerConfiguration()) .DefaultPolicy() .TaskQueues(new MessagingConfiguration((IAmAMessageStore <Message>)messageStore, producer, messageMapperRegistry)) .RequestContextFactory(new InMemoryRequestContextFactory()); var commandProcessor = builder.Build(); return(commandProcessor); }
private static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("usage: MultipleSender <count>"); Console.WriteLine("eg : MultipleSender 500"); return; } if (!int.TryParse(args[0], out int repeatCount)) { Console.WriteLine($"{args[0]} is not a valid number"); return; } var container = new TinyIoCContainer(); var messageMapperFactory = new TinyIoCMessageMapperFactory(container); var messageMapperRegistry = new MessageMapperRegistry(messageMapperFactory) { { typeof(CompetingConsumerCommand), typeof(CompetingConsumerCommandMessageMapper) } }; var outbox = new InMemoryOutbox(); var messagingConfiguration = new MsSqlMessagingGatewayConfiguration( @"Database=BrighterSqlQueue;Server=.\sqlexpress;Integrated Security=SSPI;", "QueueData"); var producer = new MsSqlMessageProducer(messagingConfiguration); var builder = CommandProcessorBuilder.With() .Handlers(new HandlerConfiguration()) .DefaultPolicy() .TaskQueues(new MessagingConfiguration((IAmAnOutbox <Message>)outbox, producer, messageMapperRegistry)) .RequestContextFactory(new InMemoryRequestContextFactory()); var commandProcessor = builder.Build(); using (new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }, TransactionScopeAsyncFlowOption.Enabled)) { Console.WriteLine($"Sending {repeatCount} command messages"); var sequenceNumber = 1; for (int i = 0; i < repeatCount; i++) { commandProcessor.Post(new CompetingConsumerCommand(sequenceNumber++)); } // We do NOT complete the transaction here to show that a message is // always queued, whether the transaction commits or aborts! } }