Ejemplo n.º 1
0
        protected override async Task ExecuteAsync(CancellationToken token)
        {
            consumer.Start();

            while (!token.IsCancellationRequested)
            {
                var message = await consumer.ConsumeAsync(token).ConfigureAwait(false);

                var requestLogger = logger
                                    .WithScope("MessageId", message.Id)
                                    .WithScope("TraceId", message.CorrelationId);

                using (requestLogger.BeginScope())
                {
                    requestLogger.LogDebug("Starting to process queued message.");

                    var result = await mercuryFacade.SendAsync(message.Request, token).ConfigureAwait(false);

                    if (result.IsFailed)
                    {
                        requestLogger.LogError("Failed to process queued message.");
                        requestLogger.LogDebug("Rejecting queued message.");

                        consumer.Reject(message);

                        requestLogger.LogDebug("Rejected queued message.");
                    }
                    else
                    {
                        requestLogger.LogDebug("Processed queued message.");
                        requestLogger.LogDebug("Acknowledging queued message.");

                        consumer.Acknowledge(message);

                        requestLogger.LogDebug("Acknowledged queued message.");
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> SendMailAsync([FromBody] EmailRequest model)
        {
            await mercuryFacade.SendAsync(model);

            return(Ok());
        }
Ejemplo n.º 3
0
 public Task <Result> Handle(SendMailRequest request, CancellationToken cancellationToken)
 {
     return(mercuryFacade.SendAsync(request.Request, cancellationToken));
 }