コード例 #1
0
        public void Writing_and_reading_a_message_from_the_store()
        {
            //arrange
            using (var store = NewDocumentStore())
            {
                var messageStore = new RavenMessageStore(store);
                //act
                var message = new Message(new MessageHeader(Guid.NewGuid(), "Test"), new MessageBody("Body"));               
                messageStore.Add(message).Wait();
                var retrievedMessage = messageStore.Get(message.Id).Result;

                //assert
               Assert.IsTrue(message == retrievedMessage); 
            }
        }
コード例 #2
0
        public void Writing_and_reading_a_message_from_the_store()
        {
            //arrange
            using (var store = new EmbeddableDocumentStore().Initialize())
            {
                var logger       = A.Fake <ILog>();
                var messageStore = new RavenMessageStore(store, logger);
                //act
                var message = new Message(new MessageHeader(Guid.NewGuid(), "Test", MessageType.MT_COMMAND), new MessageBody("Body"));
                messageStore.Add(message).Wait();
                var retrievedMessage = messageStore.Get(message.Id).Result;

                //assert
                Assert.IsTrue(message == retrievedMessage);
            }
        }
コード例 #3
0
        private CommandProcessor CommandProcessorRegistrar(TinyIoCContainer container, ILog logger)
        {
            //Database dao
            container.Register <ITasksDAO, TasksDAO>().AsSingleton();

            //create handler
            var handlerFactory     = new TinyIocHandlerFactory(container);
            var subscriberRegistry = new SubscriberRegistry();

            container.Register <IHandleRequests <AddTaskCommand>, AddTaskCommandHandler>().AsMultiInstance();
            subscriberRegistry.Register <AddTaskCommand, AddTaskCommandHandler>();

            //complete handler
            container.Register <IHandleRequests <CompleteTaskCommand>, CompleteTaskCommandHandler>().AsMultiInstance();
            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
            container.Register <IAmAMessageMapper <TaskReminderCommand>, TaskReminderCommandMessageMapper>().AsMultiInstance();
            var messageMapperFactory  = new TinyIoCMessageMapperFactory(container);
            var messageMapperRegistry = new MessageMapperRegistry(messageMapperFactory);

            messageMapperRegistry.Add(typeof(TaskReminderCommand), typeof(TaskReminderCommandMessageMapper));

            var ravenMessageStore = new RavenMessageStore(new EmbeddableDocumentStore().Initialize(), logger);
            var gateway           = new RmqMessageProducer(logger);

            var commandProcessor =
                CommandProcessorBuilder.With()
                .Handlers(new HandlerConfiguration(subscriberRegistry, handlerFactory))
                .Policies(policyRegistry)
                .Logger(logger)
                .TaskQueues(new MessagingConfiguration(ravenMessageStore, gateway, messageMapperRegistry))
                .RequestContextFactory(new InMemoryRequestContextFactory())
                .Build();

            return(commandProcessor);
        }