public void Compress(MessageCompression compressionType) { if (compressionType != MessageCompression.GZip) { throw new NotImplementedException("Only GZip compression is currently supported."); } Body = GZipCompress(Body); MessageCompression = compressionType; }
/// <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> /// Gets the string value of the message. The <paramref name="encoding"/> parameter /// is ignored. /// </summary> /// <param name="encoding">Ignored.</param> /// <returns> /// The string value of the message. /// </returns> public string GetStringValue(Encoding encoding) { var stringValue = RawStringValue; if (_namedPipeMessage.Headers.ContainsKey(HeaderName.CompressedPayload) && _namedPipeMessage.Headers[HeaderName.CompressedPayload] == "true") { stringValue = MessageCompression.Decompress(stringValue); } return(stringValue); }
/// <summary> /// Gets the string value of the message. /// </summary> /// <param name="encoding">The encoding to use. Ignored.</param> /// <returns>The string value of the message.</returns> public string GetStringValue(Encoding encoding) { var stringValue = RawStringValue; if (_message.MessageAttributes.ContainsKey(HeaderName.CompressedPayload) && _message.MessageAttributes[HeaderName.CompressedPayload].StringValue == "true") { stringValue = MessageCompression.Decompress(stringValue); } return(stringValue); }
public void Compress(MessageCompression compressionType) { if (compressionType != MessageCompression.GZip) { throw new NotImplementedException("Only GZip compression is currently supported."); } if (this.MessageCompression != MessageCompression.None) { throw new InvalidOperationException($"The message has already been compressed using {MessageCompression}"); } Body = GZipCompress(Body); MessageCompression = compressionType; }
/// <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); }