public SqliteMessageStoreMessageAlreadyExistsAsyncTests() { _sqliteTestHelper = new SqliteTestHelper(); _sqliteTestHelper.SetupMessageDb(); _sSqlMessageStore = new SqliteMessageStore(new SqliteMessageStoreConfiguration(_sqliteTestHelper.ConnectionString, _sqliteTestHelper.TableName_Messages)); _messageEarliest = new Message(new MessageHeader(Guid.NewGuid(), "test_topic", MessageType.MT_DOCUMENT), new MessageBody("message body")); }
public void Establish() { _sqliteTestHelper = new SqliteTestHelper(); _sqliteTestHelper.SetupMessageDb(); _sSqlMessageStore = new SqliteMessageStore(new SqliteMessageStoreConfiguration(_sqliteTestHelper.ConnectionString, _sqliteTestHelper.TableName_Messages)); _messageEarliest = new Message(new MessageHeader(Guid.NewGuid(), "test_topic", MessageType.MT_DOCUMENT), new MessageBody("message body")); AsyncContext.Run(async() => await _sSqlMessageStore.AddAsync(_messageEarliest)); }
public void Establish() { _sqliteTestHelper = new SqliteTestHelper(); _sqliteTestHelper.SetupMessageDb(); _sqlMessageStore = new SqliteMessageStore(new SqliteMessageStoreConfiguration(_sqliteTestHelper.ConnectionString, _sqliteTestHelper.TableName_Messages)); _message = new Message(new MessageHeader(Guid.NewGuid(), "test_topic", MessageType.MT_DOCUMENT), new MessageBody("message body")); AddHistoricMessage(_message); }
public SqliteMessageStoreRangeRequestAsyncTests() { _sqliteTestHelper = new SqliteTestHelper(); _sqliteTestHelper.SetupMessageDb(); _sqlMessageStore = new SqliteMessageStore(new SqliteMessageStoreConfiguration(_sqliteTestHelper.ConnectionString, _sqliteTestHelper.TableName_Messages)); _messageEarliest = new Message(new MessageHeader(Guid.NewGuid(), _TopicFirstMessage, MessageType.MT_DOCUMENT), new MessageBody("message body")); _message1 = new Message(new MessageHeader(Guid.NewGuid(), "test_topic2", MessageType.MT_DOCUMENT), new MessageBody("message body2")); _message2 = new Message(new MessageHeader(Guid.NewGuid(), _TopicLastMessage, MessageType.MT_DOCUMENT), new MessageBody("message body3")); }
public SqliteMessageStoreWritingMessageAsyncTests() { _sqliteTestHelper = new SqliteTestHelper(); _sqliteTestHelper.SetupMessageDb(); _sqlMessageStore = new SqliteMessageStore(new SqliteMessageStoreConfiguration(_sqliteTestHelper.ConnectionString, _sqliteTestHelper.TableName_Messages)); var messageHeader = new MessageHeader(Guid.NewGuid(), "test_topic", MessageType.MT_DOCUMENT, DateTime.UtcNow.AddDays(-1), 5, 5); messageHeader.Bag.Add(key1, value1); messageHeader.Bag.Add(key2, value2); _messageEarliest = new Message(messageHeader, new MessageBody("message body")); }
public void Establish() { _sqliteTestHelper = new SqliteTestHelper(); _sqliteTestHelper.SetupMessageDb(); _sSqlMessageStore = new SqliteMessageStore(new SqliteMessageStoreConfiguration(_sqliteTestHelper.ConnectionString, _sqliteTestHelper.TableName_Messages)); var messageHeader = new MessageHeader(Guid.NewGuid(), "test_topic", MessageType.MT_DOCUMENT, DateTime.UtcNow.AddDays(-1), 5, 5); messageHeader.Bag.Add(key1, value1); messageHeader.Bag.Add(key2, value2); _messageEarliest = new Message(messageHeader, new MessageBody("message body")); AsyncContext.Run(async() => await _sSqlMessageStore.AddAsync(_messageEarliest)); }
public SqlMessageStoreWritngMessagesTests() { _sqliteTestHelper = new SqliteTestHelper(); _sqliteTestHelper.SetupMessageDb(); _sqlMessageStore = new SqliteMessageStore(new SqliteMessageStoreConfiguration(_sqliteTestHelper.ConnectionString, _sqliteTestHelper.TableName_Messages)); _messageEarliest = new Message(new MessageHeader(Guid.NewGuid(), "Test", MessageType.MT_COMMAND, DateTime.UtcNow.AddHours(-3)), new MessageBody("Body")); _sqlMessageStore.Add(_messageEarliest); var message2 = new Message(new MessageHeader(Guid.NewGuid(), "Test2", MessageType.MT_COMMAND, DateTime.UtcNow.AddHours(-2)), new MessageBody("Body2")); _sqlMessageStore.Add(message2); _messageLatest = new Message(new MessageHeader(Guid.NewGuid(), "Test3", MessageType.MT_COMMAND, DateTime.UtcNow.AddHours(-1)), new MessageBody("Body3")); _sqlMessageStore.Add(_messageLatest); }
public void Establish() { _sqliteTestHelper = new SqliteTestHelper(); _sqliteTestHelper.SetupMessageDb(); _sSqlMessageStore = new SqliteMessageStore(new SqliteMessageStoreConfiguration(_sqliteTestHelper.ConnectionString, _sqliteTestHelper.TableName_Messages)); Clock.OverrideTime = DateTime.UtcNow.AddHours(-3); _messageEarliest = new Message(new MessageHeader(Guid.NewGuid(), "Test", MessageType.MT_COMMAND), new MessageBody("Body")); _sSqlMessageStore.Add(_messageEarliest); Clock.OverrideTime = DateTime.UtcNow.AddHours(-2); _message2 = new Message(new MessageHeader(Guid.NewGuid(), "Test2", MessageType.MT_COMMAND), new MessageBody("Body2")); _sSqlMessageStore.Add(_message2); Clock.OverrideTime = DateTime.UtcNow.AddHours(-1); _messageLatest = new Message(new MessageHeader(Guid.NewGuid(), "Test3", MessageType.MT_COMMAND), new MessageBody("Body3")); _sSqlMessageStore.Add(_messageLatest); }
public SqlMessageStoreWritngMessagesAsyncTests() { _sqliteTestHelper = new SqliteTestHelper(); _sqliteTestHelper.SetupMessageDb(); _sSqlMessageStore = new SqliteMessageStore(new SqliteMessageStoreConfiguration(_sqliteTestHelper.ConnectionString, _sqliteTestHelper.TableName_Messages)); }
public IServiceProvider ConfigureServices(IServiceCollection services) { // Add framework serviceProvider. services.AddMvc(); services.AddSingleton <ITaskListRetriever, TaskListRetriever>(); services.AddSingleton <ITaskRetriever, TaskRetriever>(); services.AddSingleton <ITasksDAO, TasksDAO>(); //create handler var subscriberRegistry = new SubscriberRegistry(); services.AddTransient <IHandleRequests <AddTaskCommand>, AddTaskCommandHandler>(); subscriberRegistry.Register <AddTaskCommand, AddTaskCommandHandler>(); //complete handler services.AddTransient <IHandleRequests <CompleteTaskCommand>, CompleteTaskCommandHandler>(); subscriberRegistry.Register <CompleteTaskCommand, CompleteTaskCommandHandler>(); //create policies var retryPolicy = Policy.Handle <Exception>().WaitAndRetry(new[] { TimeSpan.FromMilliseconds(50), TimeSpan.FromMilliseconds(100), TimeSpan.FromMilliseconds(150) }); var circuitBreakerPolicy = Policy.Handle <Exception>().CircuitBreaker(1, TimeSpan.FromMilliseconds(500)); var policyRegistry = new PolicyRegistry() { { CommandProcessor.RETRYPOLICY, retryPolicy }, { CommandProcessor.CIRCUITBREAKER, circuitBreakerPolicy } }; //create message mappers services.AddTransient <IAmAMessageMapper <TaskReminderCommand>, TaskReminderCommandMessageMapper>(); var messagingGatewayConfiguration = RmqGatewayBuilder.With.Uri(new Uri(Configuration["RabbitMQ:Uri"])).Exchange(Configuration["RabbitMQ:Exchange"]).DefaultQueues(); var gateway = new RmqMessageProducer(messagingGatewayConfiguration); IAmAMessageStore <Message> sqlMessageStore = new SqliteMessageStore(new SqliteMessageStoreConfiguration("Data Source = tasks.db", "MessageStores")); var container = new Container(); container.Configure(config => { var servicesMessageMapperFactory = new ServicesMessageMapperFactory(container); var messageMapperRegistry = new MessageMapperRegistry(servicesMessageMapperFactory) { { typeof(TaskReminderCommand), typeof(TaskReminderCommandMessageMapper) }, { typeof(TaskAddedEvent), typeof(TaskAddedEventMapper) }, { typeof(TaskEditedEvent), typeof(TaskEditedEventMapper) }, { typeof(TaskCompletedEvent), typeof(TaskCompletedEventMapper) }, { typeof(TaskReminderSentEvent), typeof(TaskReminderSentEventMapper) } }; var servicesHandlerFactory = new ServicesHandlerFactory(container); var commandProcessor = CommandProcessorBuilder.With() .Handlers(new HandlerConfiguration(subscriberRegistry, servicesHandlerFactory)) .Policies(policyRegistry) .TaskQueues(new MessagingConfiguration(sqlMessageStore, gateway, messageMapperRegistry)) .RequestContextFactory(new InMemoryRequestContextFactory()) .Build(); config.For <IAmACommandProcessor>().Singleton().Use(() => commandProcessor); }); container.Populate(services); return(container.GetInstance <IServiceProvider>()); }
public IServiceProvider ConfigureServices(IServiceCollection services) { // Add framework serviceProvider. services.AddMvc(); services.AddSingleton<ITaskListRetriever, TaskListRetriever>(); services.AddSingleton<ITaskRetriever, TaskRetriever>(); services.AddSingleton<ITasksDAO, TasksDAO>(); //create handler var subscriberRegistry = new SubscriberRegistry(); services.AddTransient<IHandleRequests<AddTaskCommand>, AddTaskCommandHandler>(); subscriberRegistry.Register<AddTaskCommand, AddTaskCommandHandler>(); //complete handler services.AddTransient<IHandleRequests<CompleteTaskCommand>, CompleteTaskCommandHandler>(); subscriberRegistry.Register<CompleteTaskCommand, CompleteTaskCommandHandler>(); //create policies var retryPolicy = Policy.Handle<Exception>().WaitAndRetry(new[] { TimeSpan.FromMilliseconds(50), TimeSpan.FromMilliseconds(100), TimeSpan.FromMilliseconds(150) }); var circuitBreakerPolicy = Policy.Handle<Exception>().CircuitBreaker(1, TimeSpan.FromMilliseconds(500)); var policyRegistry = new PolicyRegistry() { { CommandProcessor.RETRYPOLICY, retryPolicy }, { CommandProcessor.CIRCUITBREAKER, circuitBreakerPolicy } }; //create message mappers services.AddTransient<IAmAMessageMapper<TaskReminderCommand>, TaskReminderCommandMessageMapper>(); var messagingGatewayConfiguration = RmqGatewayBuilder.With.Uri(new Uri(Configuration["RabbitMQ:Uri"])).Exchange(Configuration["RabbitMQ:Exchange"]).DefaultQueues(); var gateway = new RmqMessageProducer(messagingGatewayConfiguration); IAmAMessageStore<Message> sqlMessageStore = new SqliteMessageStore(new SqliteMessageStoreConfiguration("Data Source = tasks.db", "MessageStores")); var container = new Container(); container.Configure(config => { var servicesMessageMapperFactory = new ServicesMessageMapperFactory(container); var messageMapperRegistry = new MessageMapperRegistry(servicesMessageMapperFactory) { {typeof(TaskReminderCommand), typeof(TaskReminderCommandMessageMapper)}, {typeof(TaskAddedEvent), typeof(TaskAddedEventMapper)}, {typeof(TaskEditedEvent), typeof(TaskEditedEventMapper)}, {typeof(TaskCompletedEvent), typeof(TaskCompletedEventMapper)}, {typeof(TaskReminderSentEvent), typeof(TaskReminderSentEventMapper)} }; var servicesHandlerFactory = new ServicesHandlerFactory(container); var commandProcessor = CommandProcessorBuilder.With() .Handlers(new HandlerConfiguration(subscriberRegistry, servicesHandlerFactory)) .Policies(policyRegistry) .TaskQueues(new MessagingConfiguration(sqlMessageStore, gateway, messageMapperRegistry)) .RequestContextFactory(new InMemoryRequestContextFactory()) .Build(); config.For<IAmACommandProcessor>().Singleton().Use(() => commandProcessor); }); container.Populate(services); return container.GetInstance<IServiceProvider>(); }