コード例 #1
0
        public Task CreateActivities(int number)
        {
            var tasks = new Task[number];

            for (int i = 0; i < number; i++)
            {
                AccountCreatedMessage message = new AccountCreatedMessage(i, $"User {i}", "UserRef {i}");
                var messageContext            = new FakeMessage <AccountCreatedMessage>(message, Guid.NewGuid().ToString());

                MessageContextProvider.StoreMessageContext(messageContext);

                tasks[i] = ActivitySaver
                           .SaveActivity(message, ActivityType.AccountCreated)
                           .ContinueWith(t => CreatedActivities.Add(t.Result))
                           .ContinueWith(t => MessageContextProvider.ReleaseMessageContext(messageContext));
            }

            return(Task.WhenAll(tasks)
                   .ContinueWith(task =>
            {
                Assert.IsTrue(tasks.All(t => t.IsCompleted), "At least one creation task did not complete");

                var firstFaulted = tasks.FirstOrDefault(t => t.IsFaulted);
                if (firstFaulted != null)
                {
                    Assert.Fail($"At least one creation task faulted.{firstFaulted.Exception.Flatten().Message}");
                }

                Assert.AreEqual(number, CreatedActivities.Count, "Incorrect number of accounts created");
            }));
        }
コード例 #2
0
 public static async Task PublishAccountCreatedAsync(
     this IServiceBusClient serviceBusClient,
     AccountCreatedMessage account)
 {
     await serviceBusClient.PublishAsync(
         account,
         AccountServiceBusConstants.AccountCreatedLabel,
         AccountServiceBusConstants.AccountTopicName);
 }
コード例 #3
0
        protected override async Task <GetAccountDto> ExecuteAsync(CreateAccountCommand request, CancellationToken ct)
        {
            CreateAccountDto createAccountDto = _mapper.Map <CreateAccountDto>(request);

            GetAccountDto accountDto = await _accountService.AddAsync(createAccountDto, ct);

            AccountCreatedMessage accountCreatedMessage = _mapper.Map <AccountCreatedMessage>(accountDto);

            await _serviceBusClient.PublishAccountCreatedAsync(accountCreatedMessage);

            return(accountDto);
        }
コード例 #4
0
        private async Task Approve(BaseRequestStatusUpdatedMessage message, ExchangeratRequest request)
        {
            if (message == null || request == null)
            {
                throw new ArgumentNullException();
            }

            request.Status = Status.Approved;
            object messageData = null;

            if (message.RequestType == "Create Account")
            {
                messageData = new AccountCreatedMessage()
                {
                    UserId        = message.UserId,
                    AccountTypeId = message.AccountTypeId.Value
                };
            }
            else if (message.RequestType == "Block Account")
            {
                messageData = new AccountBlockedMessage()
                {
                    UserId    = message.UserId,
                    AccountId = message.AccountId.Value
                };
            }
            else if (message.RequestType == "Close Account")
            {
                messageData = new AccountDeletedMessage()
                {
                    UserId    = message.UserId,
                    AccountId = message.AccountId.Value
                };
            }

            var messageToStore = new Message(messageData);

            await this.Save(request, messageToStore);

            await this.publisher.Publish(messageData);

            await this.MarkMessageAsPublished(messageToStore.Id);
        }