コード例 #1
0
        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}'");
        }