Exemplo n.º 1
0
        /// <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)));
        }
Exemplo n.º 2
0
 /// <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);
Exemplo n.º 3
0
 /// <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);