public void SqsPublishFlow_grouped_should_send_messages_to_SQS_in_batches() { client.SendMessageBatchAsync(Arg.Any <SendMessageBatchRequest>()).Returns(req => Task.FromResult(new SendMessageBatchResponse { Failed = new List <BatchResultErrorEntry>(0), Successful = ((SendMessageBatchRequest)req[0]).Entries .Select(e => new SendMessageBatchResultEntry { Id = e.Id }).ToList() })); var publisher = this.CreatePublisherProbe <string>(); var subscriber = this.CreateSubscriberProbe <SqsPublishResultEntry>(); Source.FromPublisher(publisher) .Select(msg => new SendMessageRequest(TestQueueUrl, msg)) .Via(SqsPublishFlow.Grouped(client, TestQueueUrl)) .To(Sink.FromSubscriber(subscriber)) .Run(materializer); subscriber.Request(2); publisher.SendNext("a-1"); publisher.SendNext("a-2"); subscriber.ExpectNext <SqsPublishResultEntry>(r => r.Request.MessageBody == "a-1" && r.Request.QueueUrl == TestQueueUrl); subscriber.ExpectNext <SqsPublishResultEntry>(r => r.Request.MessageBody == "a-2" && r.Request.QueueUrl == TestQueueUrl); subscriber.Cancel(); }
public void SqsPublishFlow_grouped_should_fail_downstream_on_partial_failure() { client.SendMessageBatchAsync(Arg.Any <SendMessageBatchRequest>()).Returns(req => { var request = ((SendMessageBatchRequest)req[0]); var success = request.Entries[0]; var failure = request.Entries[1]; return(Task.FromResult(new SendMessageBatchResponse { Failed = new List <BatchResultErrorEntry> { new BatchResultErrorEntry { Code = "Test Error", Id = failure.Id } }, Successful = new List <SendMessageBatchResultEntry> { new SendMessageBatchResultEntry { Id = success.Id } } })); }); var publisher = this.CreatePublisherProbe <string>(); var subscriber = this.CreateSubscriberProbe <SqsPublishResultEntry>(); Source.FromPublisher(publisher) .Select(msg => new SendMessageRequest(TestQueueUrl, msg)) .Via(SqsPublishFlow.Grouped(client, TestQueueUrl)) .To(Sink.FromSubscriber(subscriber)) .Run(materializer); subscriber.Request(2); publisher.SendNext("a-1"); publisher.SendNext("a-2"); subscriber.ExpectError(); }