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