public void Given_The_Message_Cannot_Be_Processed_When_I_Set_A_DeadLetter_Then_The_Message_Is_Only_Handled_The_Correct_Amount_Of_Times()
        {
            //arrange
            const int maxAttempts = 5;

            var message1 = $"Hello, world {Guid.NewGuid()}";

            _messageHandler.SetResult(false);

            //act
            _sut
            .WithProject(_projectId)
            .WithTopic(_topicId)
            .CreateSubscription(_subscriptionId, 60)
            .WithDeadLetter(_deadLetterTopicId, maxAttempts)
            .StartConsuming(_messageHandler, true);

            PublishMessage(message1);

            Thread.Sleep(20000); // allow time for processing the messages off the queue

            //assert
            Assert.IsNotNull(_messageHandler.MessagesHandled);
            Assert.AreEqual(0, _messageHandler.MessagesHandled.Count);
            Assert.IsTrue(_messageHandler.MessagesNotHandled.Count == maxAttempts || _messageHandler.MessagesNotHandled.Count == maxAttempts + 1);
            Assert.IsTrue(_messageHandler.MessagesNotHandled.Contains(message1));
        }
        public void Given_Subscribe_To_One_Message_When_I_Call_StopConsuming_Using_FluentApi_Then_Subsequent_Messages_Are_Not_Handled()
        {
            //arrange
            var message1 = $"Hello, world {Guid.NewGuid()}";
            var message2 = $"Why, Hello {Guid.NewGuid()}";

            //act
            _sut
            .WithProject(_projectId)
            .WithSubscription(_subscriptionId)
            .StartConsuming(_messageHandler);

            PublishMessage(message1);

            Thread.Sleep(5000); // allow time for processing the messages off the queue

            _sut.StopConsuming();

            PublishMessage(message2);

            Thread.Sleep(5000); // allow time for processing the messages off the queue

            //assert
            Assert.IsNotNull(_messageHandler.MessagesHandled);
            Assert.AreEqual(1, _messageHandler.MessagesHandled.Count);
            Assert.IsTrue(_messageHandler.MessagesHandled.Contains(message1));
        }
Esempio n. 3
0
        public void Given_The_Same_DeadLetter_For_Two_Subscriptions_When_A_Message_Fails_Then_The_Message__Put_On_The_One_Deadletter_Topic()
        {
            //arrange
            const int maxAttempts = 5;

            var message1 = $"Hello, world {Guid.NewGuid()}";
            var message2 = $"Hello, world {Guid.NewGuid()}";

            _messageHandler1.SetResult(false);
            _messageHandler2.SetResult(false);

            //act
            _sut1
            .WithProject(_projectId)
            .WithTopic(_topic1Id)
            .CreateSubscription(_subscription1Id, 60)
            .WithDeadLetter(_deadLetterTopicId, maxAttempts)
            .StartConsuming(_messageHandler1, true);

            _sut2
            .WithProject(_projectId)
            .WithTopic(_topic2Id)
            .CreateSubscription(_subscription2Id, 60)
            .WithDeadLetter(_deadLetterTopicId, maxAttempts)
            .StartConsuming(_messageHandler2, true);

            PublishMessage(message1, _topic1Id);
            PublishMessage(message2, _topic2Id);

            Thread.Sleep(20000); // allow time for processing the messages off the queue

            var subscription1Message = _messageHelper.GetMessage(_projectId, _subscription1Id);
            var subscription2Message = _messageHelper.GetMessage(_projectId, _subscription2Id);

            Thread.Sleep(20000); // allow time for processing the messages onto the deadletter queue

            var deadletterMessage1 = _messageHelper.GetMessage(_projectId, _deadLetterSubscriptionId);
            var deadletterMessage2 = _messageHelper.GetMessage(_projectId, _deadLetterSubscriptionId);

            //assert
            Assert.IsNull(subscription1Message);
            Assert.IsNull(subscription2Message);
            Assert.IsNotNull(deadletterMessage1);
            Assert.IsNotNull(deadletterMessage2);
            Assert.IsTrue(deadletterMessage1 == message1 || deadletterMessage2 == message1);
            Assert.IsTrue(deadletterMessage1 == message2 || deadletterMessage2 == message2);
        }
        public void Given_A_Message_When_I_Call_PublishMessage_Then_The_Message_Is_Published()
        {
            //arrange
            var message = $"Hello, world {Guid.NewGuid()}";

            _topicService.CreateTopic(_projectId, _topicId);
            _subscriptionService.CreateSubscription(_projectId, _topicId, _subscriptionId, _ackTimeoutInSeconds);

            //act
            _sut
            .WithProject(_projectId)
            .WithTopic(_topicId)
            .Publish(message);

            var result = _messageHelper.GetMessage(_projectId, _subscriptionId);

            //assert
            Assert.IsNotNull(result);
            Assert.AreEqual(message, result);
        }
        public void Given_I_Supply_Valid_Arguments_I_Can_Create_And_Consume_From_A_Subscription_In_One_Call()
        {
            //arrange
            var message1 = $"Hello, world {Guid.NewGuid()}";

            //act
            _sut
            .WithProject(_projectId)
            .WithTopic(_topicId)
            .CreateSubscription(_subscriptionId, 600)
            .StartConsuming(_messageHandler, true);

            PublishMessage(message1);

            Thread.Sleep(5000); // allow time for processing the messages off the queue

            //assert
            Assert.IsNotNull(_messageHandler.MessagesHandled);
            Assert.AreEqual(1, _messageHandler.MessagesHandled.Count);
            Assert.IsTrue(_messageHandler.MessagesHandled.Contains(message1));
        }