コード例 #1
0
        private static void Main(string[] args)
        {
            var container = new SimpleInjectorComponentContainer(new Container());

            ServiceBus.Register(container);

            var transportMessageFactory = container.Resolve <ITransportMessageFactory>();

            using (var bus = ServiceBus.Create(container).Start())
            {
                string userName;

                while (!string.IsNullOrEmpty(userName = Console.ReadLine()))
                {
                    var command = new RegisterMemberCommand
                    {
                        UserName = userName
                    };

                    var transportMessage = transportMessageFactory.Create(command, c => { });

                    for (var i = 0; i < 5; i++)
                    {
                        bus.Dispatch(transportMessage);                         // will be processed once since message id is the same
                    }

                    bus.Send(command);                     // will be processed since it has a new message id
                    bus.Send(command);                     // will also be processed since it too has a new message id
                }
            }
        }
コード例 #2
0
        static void Main(string[] args)
        {
            using (var bus = ServiceBus.Create().Start())
            {
                string userName;

                while (!string.IsNullOrEmpty(userName = Console.ReadLine()))
                {
                    var command = new RegisterMemberCommand
                    {
                        UserName = userName
                    };

                    var transportMessage = bus.CreateTransportMessage(command, null);

                    for (var i = 0; i < 5; i++)
                    {
                        bus.Dispatch(transportMessage);                         // will be processed once since message id is the same
                    }

                    bus.Send(command);                     // will be processed since it has a new message id
                    bus.Send(command);                     // will also be processed since it also has a new message id
                }
            }
        }
コード例 #3
0
        public async Task Should_receive_the_timeout_notification()
        {
            RegisterMember registerMember = new RegisterMemberCommand
            {
                MemberNumber = Guid.NewGuid().ToString(),
                Name = "Frank",
                Address = "123 american way",
            };

            await InputQueueSendEndpoint.Send(registerMember);

            Guid? saga = await _repository.ShouldContainSaga(x => x.MemberNumber == registerMember.MemberNumber
                && GetCurrentState(x) == _machine.AddressValidationTimeout, TestTimeout);
            Assert.IsTrue(saga.HasValue);
        }
コード例 #4
0
        public async Task Should_receive_the_timeout_notification()
        {
            RegisterMember registerMember = new RegisterMemberCommand
            {
                MemberNumber = Guid.NewGuid().ToString(),
                Name         = "Frank",
                Address      = "123 american way",
            };

            await InputQueueSendEndpoint.Send(registerMember);

            Guid?saga = await _repository.ShouldContainSaga(x => x.MemberNumber == registerMember.MemberNumber &&
                                                            GetCurrentState(x) == _machine.AddressValidationTimeout, TestTimeout);

            Assert.IsTrue(saga.HasValue);
        }
コード例 #5
0
            public async Task Should_handle_the_response()
            {
                Task <ConsumeContext <MemberRegistered> > handler = SubscribeHandler <MemberRegistered>();

                RegisterMember registerMember = new RegisterMemberCommand
                {
                    MemberNumber = Guid.NewGuid().ToString(),
                    Name         = "Frank",
                    Address      = "123 american way"
                };

                await InputQueueSendEndpoint.Send(registerMember);

                ConsumeContext <MemberRegistered> registered = await handler;

                Guid?saga = await _repository.ShouldContainSaga(x => x.MemberNumber == registerMember.MemberNumber &&
                                                                GetCurrentState(x) == _machine.Registered, TestTimeout);

                Assert.IsTrue(saga.HasValue);

                var sagaInstance = _repository[saga.Value].Instance;

                Assert.IsFalse(sagaInstance.ValidateAddressRequestId.HasValue);
            }
コード例 #6
0
        private static void Main(string[] args)
        {
            var simpleInjectorContainer = new Container();

            simpleInjectorContainer.Options.EnableAutoVerification = false;

            var container = new SimpleInjectorComponentContainer(simpleInjectorContainer);

            container.Register <IAzureStorageConfiguration, DefaultAzureStorageConfiguration>();
            container.RegisterServiceBus();

            var transportMessageFactory = container.Resolve <ITransportMessageFactory>();

            using (var bus = container.Resolve <IServiceBus>().Start())
            {
                string userName;

                while (!string.IsNullOrEmpty(userName = Console.ReadLine()))
                {
                    var command = new RegisterMemberCommand
                    {
                        UserName = userName
                    };

                    var transportMessage = transportMessageFactory.Create(command, c => { });

                    for (var i = 0; i < 5; i++)
                    {
                        bus.Dispatch(transportMessage);                         // will be processed once since message id is the same
                    }

                    bus.Send(command);                     // will be processed since it has a new message id
                    bus.Send(command);                     // will also be processed since it too has a new message id
                }
            }
        }