public void DeclareQueueFailWithEmptyName() { var messagingService = new MessagingService(); Assert.Throws <ArgumentNullException>(() => messagingService.DeclareQueue(null)); Assert.Throws <ArgumentNullException>(() => messagingService.DeclareQueue(" ")); }
public static void Run() { var messagingService = new MessagingService(); // RabbitMQ init messagingService.DeclareExchange("deadletter.exchange", Constants.ExchangeTypeFanout); messagingService.DeclareQueue("deadletter.queue"); messagingService.DeclareBinding("deadletter.exchange", "deadletter.queue", "#"); messagingService.DeclareExchange("delay.exchange", Constants.ExchangeTypeHeaders); messagingService.DeclareQueueWithDeadLetterPolicy("deadletter.queue.5", "deadletter.exchange", 5000, null); messagingService.DeclareQueueWithDeadLetterPolicy("deadletter.queue.30", "deadletter.exchange", 30000, null); messagingService.DeclareBinding("delay.exchange", "deadletter.queue.5", "#", new Dictionary <string, object> { { "delay", 5 } }); messagingService.DeclareBinding("delay.exchange", "deadletter.queue.30", "#", new Dictionary <string, object> { { "delay", 30 } }); var dateStart = DateTime.Now; // Get the publisher and publish messages using (var publisher = messagingService.GetPublisher("delay.exchange")) { // publish messages waiting 5s for (int i = 0; i <= 10; i++) { var message = new Message($"delay.5.message.{i}", $"Waited 5s: {i} !"); message.Header.GetProperties().Add("delay", 5); publisher.Publish(message); } // publish messages waiting 30s for (int i = 0; i <= 10; i++) { var message = new Message($"delay.30.message.{i}", $"Waited 30s: {i} !"); message.Header.GetProperties().Add("delay", 30); publisher.Publish(message); } } // Get the consumer on the existing queue and consume its messages var consumer = messagingService.GetConsumer("deadletter.queue"); consumer.Consume((object sender, IMessagingEvent args) => { var realDelay = DateTime.Now.Subtract(dateStart).TotalSeconds; Console.WriteLine(string.Format("{0} received after {1:#.##}s.", args.Message.GetRoutingKey(), realDelay)); // send ACK: acknowlegdment to the queue consumer.AcknowlegdeDeliveredMessage(args); }); }
public static void Run() { var messagingService = new MessagingService(); // RabbitMQ init messagingService.DeclareExchange("simple.exchange"); messagingService.DeclareQueue("simple.queue"); messagingService.DeclareBinding("simple.exchange", "simple.queue", "simple.message.*"); // Get the publisher and declare Exhange where publish messages using (var publisher = messagingService.GetPublisher("simple.exchange")) { // publish messages for (int i = 0; i <= 10; i++) { publisher.Publish(new Message($"simple.message.test{i}", $"Hello world {i} !")); } } // Get the consumer on the existing queue and consume its messages var consumer = messagingService.GetConsumer("simple.queue"); var random = new Random(); consumer.Consume((object sender, IMessagingEvent args) => { // we simulate the delivery success if (random.Next() % 2 == 0) { Console.WriteLine("Retry " + args.Message.GetRoutingKey()); // send NACK: negative acknowlegdment to the queue consumer.RejectDeliveredMessage(args); } else { Console.WriteLine(args.Message.GetBody()); // send ACK: acknowlegdment to the queue consumer.AcknowlegdeDeliveredMessage(args); } }); }
public static void Run() { var messagingService = new MessagingService(); // RabbitMQ init messagingService.DeclareExchange("stop.exchange"); messagingService.DeclareQueue("stop.queue"); messagingService.DeclareBinding("stop.exchange", "stop.queue", "stop.message.* "); // Get the publisher and declare Exhange where publish messages using (var publisher = messagingService.GetPublisher("stop.exchange")) { // publish messages for (int i = 0; i <= 20; i++) { publisher.Publish(new Message("stop.message.test" + i, $"Hello world {i} !")); } } // Get the consumer on the existing queue and consume its messages var consumer = messagingService.GetConsumer("stop.queue"); consumer.Consume((object sender, IMessagingEvent args) => { Console.WriteLine("Consumer Working: " + consumer.IsConsuming()); // Process one message max every 10 ms System.Threading.Thread.Sleep(10); Console.WriteLine(args.Message.GetBody()); // send ACK: acknowlegdment to the queue consumer.AcknowlegdeDeliveredMessage(args); }); // Stop Consuming after 100 ms ~ 10 messages System.Threading.Thread.Sleep(100); Console.WriteLine("Consumer Stopping ..."); consumer.StopConsuming((object sender, EventArgs args) => { Console.WriteLine("Consumer Stopped: " + consumer.IsConsuming().ToString()); }); }