/// <summary> /// Asynchronously sends the specified message. /// </summary> /// <param name="message">The message to send.</param> public Task SendAsync(ISenderMessage message) { var shouldCompress = message.ShouldCompress(_compressed); var stringValue = message.StringValue; if (shouldCompress) { stringValue = MessageCompression.Compress(stringValue); } var sendMessageRequest = new SendMessageRequest(_queueUrl, stringValue); var originatingSystemAlreadyExists = false; if (message.Headers != null) { foreach (var header in message.Headers) { if (header.Key == HeaderName.OriginatingSystem) { originatingSystemAlreadyExists = true; } sendMessageRequest.MessageAttributes.Add( header.Key, new MessageAttributeValue { StringValue = header.Value, DataType = "String" }); } } sendMessageRequest.MessageAttributes[HeaderName.MessageFormat] = new MessageAttributeValue { StringValue = message.MessageFormat.ToString(), DataType = "String" }; if (!originatingSystemAlreadyExists) { sendMessageRequest.MessageAttributes[HeaderName.OriginatingSystem] = new MessageAttributeValue { StringValue = "SQS", DataType = "String" }; } if (shouldCompress) { sendMessageRequest.MessageAttributes[HeaderName.CompressedPayload] = new MessageAttributeValue { StringValue = "true", DataType = "String" }; } return(_sqs.SendMessageAsync(sendMessageRequest)); }
/// <summary> /// Sends the specified message. /// </summary> /// <param name="message">The message to send.</param> public Task SendAsync(ISenderMessage message) { var shouldCompress = message.ShouldCompress(_compressed); var stringValue = shouldCompress ? MessageCompression.Compress(message.StringValue) : message.StringValue; var namedPipeMessage = new NamedPipeMessage { StringValue = stringValue, MessageFormat = message.MessageFormat, Priority = message.Priority, Headers = new Dictionary <string, string>() }; var originatingSystemAlreadyExists = false; foreach (var header in message.Headers) { if (header.Key == HeaderName.OriginatingSystem) { originatingSystemAlreadyExists = true; } namedPipeMessage.Headers.Add(header.Key, header.Value); } namedPipeMessage.Headers[HeaderName.MessageFormat] = message.MessageFormat.ToString(); if (!originatingSystemAlreadyExists) { namedPipeMessage.Headers[HeaderName.OriginatingSystem] = "NamedPipe"; } if (shouldCompress) { namedPipeMessage.Headers[HeaderName.CompressedPayload] = "true"; } var messageString = _serializer.SerializeToString(namedPipeMessage); _messages.Add(messageString); return(_completedTask); }