public Task Deliver(Uri destination, MsgNThenMessage message) { if (_deliverySchemes.TryGetValue(destination.Scheme, out var scheme)) { return(scheme.Deliver(destination, message)); } else { throw new Exception($"Failed to find ({nameof(IUriDeliveryScheme)}) for {destination}"); } }
public Task Deliver(Uri destination, MsgNThenMessage message) { // (bool sent, bool clients) TrySendMessage(string parentPipeName, string childPipeName, object body, // int maxListLength = int.MaxValue, TimeSpan ? expiry = null); //_redisTaskFunnel.TrySendMessage() //redis://<ignored>/<parent>/<child> if (destination.Segments.Length != 3) { throw new Exception($"redis uri didn't conform to the correct structure {destination}."); } var parent = destination.Segments[1].TrimEnd('/'); var child = destination.Segments[2]; var body = ((MemoryStream)message.Body).ToArray(); _redisTaskFunnel.TrySendMessage(parent, child, body); return(Task.CompletedTask); }
public async Task Deliver(Uri destination, MsgNThenMessage message) { //https://s3.us-east-2.amazonaws.com/my-bucket-name/filename //s3://john.doe@my-bucket-name/filename[ //s3://<credentialName>@<bucketname>/filename var credentials = GetCredentials(destination); var bucketName = destination.Host; var pathAndQuery = Uri.UnescapeDataString(destination.PathAndQuery).TrimStart('/'); var messageId = message.Headers[HeaderConstants.MessageId]; var messageGroupId = message.Headers[HeaderConstants.MessageGroupId]; var correlationId = message.Headers[HeaderConstants.CorrelationId]; var fileKey = string.Format(pathAndQuery, messageId, messageGroupId, correlationId); var queryDictionary = QueryHelpers.ParseQuery(destination.Query); if (message.Body.CanSeek) { message.Body.Position = 0; } using (var client = new AmazonS3Client(credentials.awsAccessKeyId, credentials.awsSecretAccessKey, RegionEndpoint.USEast1)) { var uploadRequest = new TransferUtilityUploadRequest { InputStream = message.Body, Key = fileKey, BucketName = bucketName, CannedACL = S3CannedACL.BucketOwnerFullControl }; if (queryDictionary.TryGetValue(QueryConstants.S3CannedACL, out var val)) { var cannedAcl = S3CannedACL.FindValue(val); if (cannedAcl != null) { uploadRequest.CannedACL = cannedAcl; } } var fileTransferUtility = new TransferUtility(client); await fileTransferUtility.UploadAsync(uploadRequest); } }
public Task Deliver(Uri destination, MsgNThenMessage message) { //rabbitmq://<exchangename>/<routingKey> var exchange = destination.Host; var routingKey = Uri.UnescapeDataString(destination.PathAndQuery).TrimStart('/'); var basicProperties = _channel.CreateBasicProperties(); //Headers = new Dictionary<string, object>() if (message.Headers != null) { var nonHeaders = new HashSet <string>() { HeaderConstants.MessageId, HeaderConstants.AppId, HeaderConstants.ReplyTo, HeaderConstants.UserId, HeaderConstants.CorrelationId }; DoAssignment(message.Headers[HeaderConstants.MessageId], val => basicProperties.MessageId = val); DoAssignment(message.Headers[HeaderConstants.AppId], val => basicProperties.AppId = val); DoAssignment(message.Headers[HeaderConstants.ReplyTo], val => basicProperties.ReplyTo = val); DoAssignment(message.Headers[HeaderConstants.UserId], val => basicProperties.UserId = val); DoAssignment(message.Headers[HeaderConstants.CorrelationId], val => basicProperties.CorrelationId = val); //DoAssignment(message.Headers[HeaderConstants.DeliveryMode], val => basicProperties.DeliveryMode = val); foreach (var header in message.Headers) { if (!nonHeaders.Contains(header.Key)) { basicProperties.Headers[header.Key] = header.Value; } } } var body = ((MemoryStream)message.Body).ToArray(); _channel.BasicPublish(exchange, routingKey, true, basicProperties, body); return(Task.CompletedTask); }