コード例 #1
0
        public async Task When_saga_receives_a_message_that_case_saga_exception()
        {
            var sagaId   = Guid.NewGuid();
            var personId = Guid.NewGuid();

            //prepare initial saga state

            var sagaDataEvent = new SagaCreatedEvent <SoftwareProgrammingSaga.States>(SoftwareProgrammingSaga.States.MakingCoffee, sagaId);

            SaveInJournal <SoftwareProgrammingSagaState>(sagaId, sagaDataEvent);

            var sagaTransitEvent = new CoffeMakeFailedEvent(Guid.Empty, personId).CloneWithSaga(sagaId);

            var waitResults = await GridNode.NewDebugWaiter()
                              .Expect <IFault <CoffeMakeFailedEvent> >()
                              .Create()
                              .Publish(sagaTransitEvent);

            _fault = waitResults.Message <IFault <CoffeMakeFailedEvent> >();
        }
        public void When_saga_receives_a_message_that_case_saga_exception()
        {
            var sagaId = Guid.NewGuid();
            //prepare initial saga state
            var sagaData = new SoftwareProgrammingSagaData(nameof(SoftwareProgrammingSaga.MakingCoffee))
            {
                PersonId = Guid.NewGuid()
            };
            var sagaDataEvent = new SagaCreatedEvent <SoftwareProgrammingSagaData>(sagaData, sagaId);

            SaveInJournal <SagaDataAggregate <SoftwareProgrammingSagaData> >(sagaId, sagaDataEvent);

            var waiter = GridNode.NewWaiter(TimeSpan.FromSeconds(5))
                         .Expect <IFault <CoffeMakeFailedEvent> >()
                         .Create();

            GridNode.Transport.Publish(new CoffeMakeFailedEvent(Guid.Empty, sagaData.PersonId).CloneWithSaga(sagaId));

            _fault = waiter.Result.Message <IFault <CoffeMakeFailedEvent> >();
        }
コード例 #3
0
        public void When_publishing_start_message()
        {
            var sagaId = Guid.NewGuid();

            _sagaData = new SoftwareProgrammingSagaData(nameof(SoftwareProgrammingSaga.MakingCoffee))
            {
                PersonId = Guid.NewGuid()
            };

            var sagaDataEvent = new SagaCreatedEvent <SoftwareProgrammingSagaData>(_sagaData, sagaId);

            SaveInJournal <SagaDataAggregate <SoftwareProgrammingSagaData> >(sagaId, sagaDataEvent);

            Thread.Sleep(100);
            _coffeMakeFailedEvent = new CoffeMakeFailedEvent(Guid.NewGuid(), Guid.NewGuid(), BusinessDateTime.UtcNow, sagaId);

            GridNode.Transport.Publish(_coffeMakeFailedEvent, new MessageMetadata(_coffeMakeFailedEvent.SourceId));

            //WaitFor<SagaTransitionEvent<SoftwareProgrammingSagaData>>();
            //WaitFor<SagaTransitionEvent<SoftwareProgrammingSagaData>>();
            Thread.Sleep(1000);
            _sagaDataAggregate = LoadAggregate <SagaDataAggregate <SoftwareProgrammingSagaData> >(sagaId);
        }
コード例 #4
0
 public void Apply(SagaCreatedEvent <TSagaData> e)
 {
     Data = e.State;
     Id   = e.SourceId;
 }
コード例 #5
0
 public void Apply(SagaCreatedEvent <TState> e)
 {
     MachineState = e.State;
     Id           = e.SourceId;
 }