public async Task <Response> Handle(PublishTransaction request, CancellationToken cancellationToken) { var @event = new TransactionEvent(request.AccountId, request.Date, request.Value, request.Type); await _publisher.PublishAsync(@event); return(new Response()); }
public async Task <Response> Handle(Transfer request, CancellationToken cancellationToken) { var validation = new Response(); //Validar contas try { await _accountService.GetAccountByIDAsync(request.From); } catch (System.Net.Http.HttpRequestException) { validation.AddNotification("Transferência", "A conta de origem não existe!"); return(validation); } try { await _accountService.GetAccountByIDAsync(request.To); } catch (System.Net.Http.HttpRequestException) { validation.AddNotification("Transferência", "A conta de destino não existe!"); return(validation); } //Validar saldo da conta de destino var fromBalance = await _accountService.GetAccountBalanceByIDAsync(request.From); if (fromBalance < request.Value) { validation.AddNotification("Transferência", "O saldo da conta de origem não é o suficiente pra realizar a transferência"); return(validation); } //Enviar evento de transferência entre contas await _publisher.PublishAsync(new TransactionEvent(request.From, DateTime.Now, -request.Value, ETransactionType.Transfer)); await _publisher.PublishAsync(new TransactionEvent(request.To, DateTime.Now, request.Value, ETransactionType.Transfer)); return(validation); }
public async Task <ServicesResult> PostRabbitMessageAsync(PostMessageRequest request) { var message = new TesteMessage { Campo = request.Campo }; await _publisher.PublishAsync(message); return(Created(message.MessageId)); }
public async Task PublisheAndConsumeDefault() { //Arrange var subscriber = GetService <IRabbitMQSubscriber>(); bool publishWithSuccess = false; var message = new DefaultMessage { Campo = "PublisheAndConsumeDefault" }; var options = RabbitMQExchangeOptions.Build <DefaultMessage>(); //Act subscriber.StartConsume <DefaultMessage>((msg) => { publishWithSuccess = msg.Campo == message.Campo; return(true); }); await _publisher.PublishAsync(message); Thread.Sleep(2000); subscriber.Dispose(); //Assert options.QueueName.ShouldNotBeNullOrWhiteSpace(); var queueGenerated = await _rabbitExplorer.GetQueue(options.QueueName); queueGenerated.ShouldNotBeNull(); queueGenerated.name.ShouldBe(options.QueueName); queueGenerated.durable.ShouldBe(options.Durable); publishWithSuccess.ShouldBeTrue(); }