public void Should_call_ack_on_nested_subscriptions_with_all_delivery_tag() { // Arrange var channel = Substitute.For <IModel>(); channel.IsOpen.Returns(true); var subs = new CompositeSubscription(); var subscription = new Subscription { ConsumerTag = "ConsumerTag", QueueName = "QueueName", SubscriptionName = "SubscriptionName" }; subscription.SetChannel(channel); subs.AddSubscription(subscription); // Action subs.Ack("ConsumerTag", new[] { (ulong)1, (ulong)2, (ulong)3, (ulong)4, (ulong)5 }); // Assert channel.Received().BasicAck(1, false); channel.Received().BasicAck(2, false); channel.Received().BasicAck(3, false); channel.Received().BasicAck(4, false); channel.Received().BasicAck(5, false); }
public void Should_call_ack_on_nested_subscriptions_with_all_delivery_tag() { // Arrange var channel = Substitute.For <IModel>(); channel.IsOpen.Returns(true); var subs = new CompositeSubscription(); var subscription = new Subscription { ConsumerTag = "ConsumerTag", QueueName = "QueueName", SubscriptionName = "SubscriptionName" }; subscription.SetChannel(channel); subs.AddSubscription(subscription); // Action Subscription.OutstandingDeliveryTags["ConsumerTag"] = new List <ulong>(); Subscription.OutstandingDeliveryTags["ConsumerTag"].AddRange(new ulong[] { 1, 2, 3, 4, 5 }); subs.Ack("ConsumerTag", new[] { (ulong)1, (ulong)2, (ulong)3, (ulong)4, (ulong)5 }); // Assert channel.Received().BasicAck(5, true); }
public static void StartAsync() { Global.DefaultWatcher.InfoFormat("* Target PRIORITY queues are Burrow.Queue.BurrowTestApp.Bunny_Priority0 -> 3"); Thread.Sleep(2000); PrintNotes(); Console.ReadLine(); const ushort maxPriorityLevel = 3; var tunnel = RabbitTunnel.Factory.WithPrioritySupport() .Create().WithPrioritySupport(); var totalMsg = tunnel.GetMessageCount(new PrioritySubscriptionOption <Bunny> { SubscriptionName = "BurrowTestApp", MaxPriorityLevel = maxPriorityLevel }); Global.DefaultWatcher.InfoFormat(string.Format("There are total {0} messages in all priority queues", totalMsg)); // SubscribeAsync auto Ack CompositeSubscription subscription = null; Action <Bunny, MessageDeliverEventArgs> messageHandler = (bunny, subscriptionData) => { var error = false; try { ProcessMessage(bunny); } catch (Exception) { error = true; if (subscription != null) { subscription.Nack(subscriptionData.ConsumerTag, subscriptionData.DeliveryTag, false); } } finally { if (subscription != null && !error) { subscription.Ack(subscriptionData.ConsumerTag, subscriptionData.DeliveryTag); } } }; subscription = tunnel.SubscribeAsync(new PriorityAsyncSubscriptionOption <Bunny> { SubscriptionName = "BurrowTestApp", MaxPriorityLevel = maxPriorityLevel, MessageHandler = messageHandler, QueuePrefetchSize = 10, BatchSize = 1 }); }
public void Should_call_ack_on_nested_subscriptions() { // Arrange var channel = Substitute.For <IModel>(); channel.IsOpen.Returns(true); var subs = new CompositeSubscription(); var subscription = new Subscription { ConsumerTag = "ConsumerTag", QueueName = "QueueName", SubscriptionName = "SubscriptionName" }; subscription.SetChannel(channel); subs.AddSubscription(subscription); // Action subs.Ack("ConsumerTag", 1); // Assert channel.Received().BasicAck(1, false); }