Exemple #1
0
        public void Should_fail_with_nack_confirmation_event()
        {
            model.NextPublishSeqNo.Returns(DeliveryTag);
            var publishConfirmationWaiter = publishConfirmationListener.GetWaiter(model);

            eventBus.Publish(MessageConfirmationEvent.Nack(model, DeliveryTag, false));
            Assert.Throws <PublishNackedException>(() => publishConfirmationWaiter.Wait(TimeSpan.FromMilliseconds(10)));
        }
        public async Task Should_fail_with_nack_confirmation_event()
        {
            model.NextPublishSeqNo.Returns(DeliveryTag);
            var confirmation = publishConfirmationListener.CreatePendingConfirmation(model);

            eventBus.Publish(MessageConfirmationEvent.Nack(model, DeliveryTag, false));
            await Assert.ThrowsAsync <PublishNackedException>(
                () => confirmation.WaitAsync()
                ).ConfigureAwait(false);
        }
        public void Should_fail_with_multiple_nack_confirmation_event()
        {
            model.Expect(x => x.NextPublishSeqNo).Return(DeliveryTag - 1);
            model.Expect(x => x.NextPublishSeqNo).Return(DeliveryTag);
            var publishConfirmationWaiter1 = publishConfirmationListener.GetWaiter(model);
            var publishConfirmationWaiter2 = publishConfirmationListener.GetWaiter(model);

            eventBus.Publish(MessageConfirmationEvent.Nack(model, DeliveryTag, true));
            Assert.Throws <PublishNackedException>(() => publishConfirmationWaiter1.Wait(TimeSpan.FromMilliseconds(10)));
            Assert.Throws <PublishNackedException>(() => publishConfirmationWaiter2.Wait(TimeSpan.FromMilliseconds(10)));
        }
 private void OnNack(object sender, BasicNackEventArgs args)
 {
     eventBus.Publish(MessageConfirmationEvent.Nack((IModel)sender, args.DeliveryTag, args.Multiple));
 }