Exemple #1
0
 /// <summary>
 /// Creates a <see cref="Sink{TIn,TMat}"/> that groups messages and publishes
 /// them in batches to a SQS queue using a <paramref name="client"/>.
 /// See also: https://getakka.net/articles/streams/builtinstages.html#groupedwithin
 /// </summary>
 public static Sink <SendMessageRequest, Task> GroupedMessageSink(IAmazonSQS client, string queueUrl, SqsPublishGroupedSettings settings = null) =>
 SqsPublishFlow.Grouped(client, queueUrl, settings)
 .ToMaterialized(Sink.Ignore <SqsPublishResultEntry>(), Keep.Right);
Exemple #2
0
        /// <summary>
        /// Creates a <see cref="Flow{TIn,TOut,TMat}"/> to publish messages to a SQS queue using a <paramref name="client"/>.
        /// See also: https://getakka.net/articles/streams/builtinstages.html#groupedwithin
        /// </summary>
        public static Flow <SendMessageRequest, SqsPublishResultEntry, NotUsed> Grouped(IAmazonSQS client,
                                                                                        string queueUrl, SqsPublishGroupedSettings settings = null)
        {
            settings = settings ?? SqsPublishGroupedSettings.Default;

            return(Flow.Create <SendMessageRequest>()
                   .GroupedWithin(settings.MaxBatchSize, settings.MaxBatchWait)
                   .Via(Batch(client, queueUrl, SqsPublishBatchSettings.Default.WithConcurrentRequests(settings.ConcurrentRequests)))
                   .SelectMany(x => x));
        }
Exemple #3
0
 /// <summary>
 /// Creates a <see cref="Sink{TIn,TMat}"/> that groups strings and publishes
 /// them as messages in batches to a SQS queue using a <paramref name="client"/>.
 /// See also: https://getakka.net/articles/streams/builtinstages.html#groupedwithin
 /// </summary>
 public static Sink <string, Task> Grouped(IAmazonSQS client, string queueUrl, SqsPublishGroupedSettings settings = null) =>
 Flow.FromFunction((string msg) => new SendMessageRequest(queueUrl, msg))
 .ToMaterialized(GroupedMessageSink(client, queueUrl, settings), Keep.Right);