public void polling_client_retries_if_sqs_client_throws_on_receive() { // Arrange var exceptionSqsClient = new ExceptionalSqsClient(); var pollster = new SqsPollingClient(exceptionSqsClient); // Act var messages = 0; pollster.Listen(new SqsPollingClientSettings( queueName: new SqsQueueName("test"), callback: msgs => messages++, longPollInterval: (0.5).Seconds(), maxNumberOfMessages: SqsUtils.MAX_NUMBER_OF_MESSAGES_TO_FETCH, waitTimeOnError: (0.5).Seconds() )); // Assert Assert.IsTrue(Wait.For(() => exceptionSqsClient.Calls > 3, 10.Seconds()), "never got past the first receive call, calls = {0}", exceptionSqsClient.Calls); Assert.IsTrue(Wait.For(() => exceptionSqsClient.Threw, 1.Seconds()), "exception was never thrown in receive call"); Assert.AreEqual(0, messages, "somehow received messages"); pollster.Dispose(); }