public async Task PostMessageAsync <T>(string queueName, T message) { var queueUrl = await GetQueueUrl(queueName); try { var sendMessageRequest = new SendMessageRequest { QueueUrl = queueUrl, MessageBody = JsonConvert.SerializeObject(message), MessageAttributes = SqsMessageTypeAttribute.CreateAttributes <T>() }; if (_appConfig.AwsQueueIsFifo) { sendMessageRequest.MessageGroupId = typeof(T).Name; sendMessageRequest.MessageDeduplicationId = Guid.NewGuid().ToString(); } await _sqsClient.SendMessageAsync(sendMessageRequest); } catch (Exception ex) { _logger.LogError(ex, $"Failed to PostMessagesAsync to queue '{queueName}'. Exception: {ex.Message}"); throw; } }
public async Task WriteLogEntryAsync(LogEntry logEntry) { var queueUrl = await _sqsClient.GetQueueUrlAsync(QueueName); var sendMessageRequest = new SendMessageRequest { QueueUrl = queueUrl.QueueUrl, MessageBody = JsonConvert.SerializeObject(logEntry), MessageAttributes = SqsMessageTypeAttribute.CreateAttributes(typeof(LogEntry).Name) }; if (IsQueueFifo) { sendMessageRequest.MessageGroupId = typeof(LogEntry).Name; sendMessageRequest.MessageDeduplicationId = Guid.NewGuid().ToString(); } await _sqsClient.SendMessageAsync(sendMessageRequest); }