public async Task PublishAsync( IPaymentStatusRepository paymentStatusRepository, EncryptedMessage message, CancellationToken cancellationToken = default) { // decrypt the message var decryptedMessage = message.GetMessage <PaymentRequestMessage>(_cipherService); // save the payment status var paymentStatus = new PaymentStatus { Status = PaymentStatusEnum.Scheduled.ToString(), RequestId = decryptedMessage.RequestId, PaymentId = decryptedMessage.PaymentRequestId }; try { await paymentStatusRepository.AddPaymentStatus(paymentStatus); } catch (Exception e) { _logger.LogWarning($"Probable duplicated Id: {e.Message}"); } await _writer.WriteAsync(message, cancellationToken); _logger.LogInformation($"Producer > published message {message.Id} '{message.TopicName}'"); }