public void ShouldReceiveSeveralMessages() { //Arrange var queueFactory = new TestQueueFactory { AutoDelete = false }; var q = queueFactory.CreateWithRandomId(); MqMessageRead <string> msg1; MqMessageRead <string> msg2; try { q.Publish("foo"); q.Publish("bar"); //Act msg1 = q.Listen <string>(); _output.WriteLine("Msg1: " + msg1.Message.Payload); msg1.Ack(); msg2 = q.Listen <string>(); _output.WriteLine("Msg2: " + msg2.Message.Payload); msg2.Ack(); } finally { q.Dispose(); } ////Assert Assert.Equal("foo", msg1.Message.Payload); Assert.Equal("bar", msg2.Message.Payload); }
public void ShouldNotDeliveryWhenDeadLetterRoutingIsWrong() { //Arrange var deadLetterExchange = TestExchangeFactory.Direct.CreateWithRandomId(); var deadLetterQueue = TestQueueFactory.Default.CreateWithRandomId(); deadLetterQueue.BindToExchange(deadLetterExchange, "bar"); var queueFactory = new TestQueueFactory { DeadLetterExchange = deadLetterExchange.Name, DeadLetterRoutingKey = "wrong" }; var queue = queueFactory.CreateWithRandomId(); //Act queue.Publish("foo"); var msg = queue.Listen <string>(); msg.Nack(); MqMessage <string> deadMsg = null; TimeoutException timeoutException = null; try { deadMsg = deadLetterQueue.ListenAutoAck <string>(); } catch (TimeoutException e) { timeoutException = e; } if (timeoutException == null) { _output.WriteLine("Dead message: " + (deadMsg?.Payload ?? "[null]")); } //Assert Assert.NotNull(timeoutException); }
public void ShouldDefineDeadLetterWithRouting() { //Arrange var deadLetterExchange = TestExchangeFactory.Fanout.CreateWithRandomId(); var deadLetterQueue = TestQueueFactory.Default.CreateWithRandomId(); deadLetterQueue.BindToExchange(deadLetterExchange, "bar"); var queueFactory = new TestQueueFactory { DeadLetterExchange = deadLetterExchange.Name, DeadLetterRoutingKey = "bar", AutoDelete = false }; var queue = queueFactory.CreateWithRandomId(); MqMessageRead <string> deadMsg; try { //Act queue.Publish("foo"); var msg = queue.Listen <string>(); msg.Nack(); deadMsg = deadLetterQueue.Listen <string>(); deadMsg.Ack(); } finally { queue.Dispose(); } //Assert Assert.NotNull(deadMsg); Assert.Equal("foo", deadMsg.Message.Payload); }