/// <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)); }
public Task SendAsync(ISenderMessage message) { return(Task.Run(delegate { using (var model = _connection.CreateModel()) { var props = model.CreateBasicProperties(); props.Headers = message.Headers.ToDictionary <KeyValuePair <string, string>, string, object>(kvp => kvp.Key, kvp => kvp.Value); // IEnum<KVP<S,S>> in, Dictionary<string, object> out. props.ContentType = message.MessageFormat.ToString(); props.Priority = message.Priority > highestPriority ? highestPriority : (message.Priority ?? 0); // props.ContentEncoding = new NotImplementedException(); // TODO: add this to Rock.Messaging? model.BasicPublish(_exchange, _routingKey, props, message.BinaryValue); } })); }
/// <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); }
/// <summary> /// Synchronously sends the specified message. /// </summary> /// <param name="source">The <see cref="ISender"/> from which to send the message.</param> /// <param name="message">The message to send.</param> public static void Send(this ISender source, ISenderMessage message) { source.SendAsync(message).Wait(); }
/// <summary> /// Sends the specified message. /// </summary> /// <param name="message">The message to send.</param> public Task SendAsync(ISenderMessage message) { var messageString = _serializer.SerializeToString(message); _messages.Add(messageString); return _completedTask; }
/// <summary> /// Gets a value determining whether a sender message should be compressed. /// </summary> /// <param name="source">The sender message.</param> /// <param name="compressedInConfiguration"> /// A value indicating whether the target <see cref="ISender"/> has been configured /// to compress messages. /// </param> /// <returns> /// True, if the <see cref="ISenderMessage.Compressed"/> property of /// <paramref name="source"/> is null and <paramref name="compressedInConfiguration"/> /// is true, or if the <see cref="ISenderMessage.Compressed"/> property of /// <paramref name="source"/> is null. Otherwise, return false.</returns> public static bool ShouldCompress(this ISenderMessage source, bool compressedInConfiguration) { return((source.Compressed == null && compressedInConfiguration) || source.Compressed == true); }