Ejemplo n.º 1
0
        internal static void Main()
        {
            ConfigureLogging();

            var store      = GetStore();
            var repository = new RavenDbSagaRepository <DinnerSagaState>(store);
            var machine    = new DinnerSaga();

            var bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                cfg.UseSerilog();

                var host = cfg.Host(new Uri("rabbitmq://10.211.55.10/prognet"), h =>
                {
                    h.Username("prognet");
                    h.Password("skillsmatter");
                });
                cfg.ReceiveEndpoint(host, "cafe", ep =>
                {
                    ep.StateMachineSaga(machine, repository);
                });

                cfg.UseInMemoryOutbox();
                cfg.UseInMemoryScheduler();
            });

            bus.Start();

            Console.ReadLine();

            // TaskUtil.Await(() => Work(bus));
            bus.Stop();
        }
        public void A_correlated_message_should_find_the_correct_saga()
        {
            var repository = new RavenDbSagaRepository<TestSaga>(_store);
            var ping = new PingMessage(_sagaId);

            var initiatePolicy = new InitiatingSagaPolicy<TestSaga, InitiateSimpleSaga>(x => x.CorrelationId, x => false);

            var message = new InitiateSimpleSaga(_sagaId);
            IConsumeContext<InitiateSimpleSaga> context = new ConsumeContext<InitiateSimpleSaga>(ReceiveContext.Empty(), message); ;

            repository.GetSaga(context, message.CorrelationId, GetHandlers, initiatePolicy)
                .Each(x => x(context));

            List<TestSaga> sagas = repository.Where(x => x.CorrelationId == _sagaId).ToList();

            Assert.AreEqual(1, sagas.Count);
            Assert.IsNotNull(sagas[0]);
            Assert.AreEqual(_sagaId, sagas[0].CorrelationId);
        }