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