/// <summary> /// Creates a <see cref="Flow{TIn,TOut,TMat}"/> to publish messages to a SQS queue using an <paramref name="client"/>. /// </summary> public static Flow <SendMessageRequest, SqsPublishResult, NotUsed> Default(IAmazonSQS client, string queueUrl, SqsPublishSettings settings = null) { settings = settings ?? SqsPublishSettings.Default; return(Flow.Create <SendMessageRequest>() .SelectAsync(settings.MaxInFlight, async req => Tuple.Create(req, await client.SendMessageAsync(req))) .Select(tuple => new SqsPublishResult(tuple.Item1, tuple.Item2))); }
/// <summary> /// Creates a <see cref="Sink{TIn,TMat}"/> that accepts strings and publishes them as messages /// to a SQS queue using a <paramref name="client"/>. /// </summary> public static Sink <SendMessageRequest, Task> MessageSink(IAmazonSQS client, string queueUrl, SqsPublishSettings settings = null) => SqsPublishFlow.Default(client, queueUrl, settings) .ToMaterialized(Sink.Ignore <SqsPublishResult>(), Keep.Right);
/// <summary> /// Creates a <see cref="Sink{TIn,TMat}"/> that accepts strings and publishes them as messages /// to a SQS queue using a <paramref name="client"/>. /// </summary> public static Sink <string, Task> Default(IAmazonSQS client, string queueUrl, SqsPublishSettings settings = null) => Flow.FromFunction((string msg) => new SendMessageRequest(queueUrl, msg)) .ToMaterialized(MessageSink(client, queueUrl, settings), Keep.Right);