@@ -1695,6 +1695,51 @@ void MessageReceived(object sender, BasicDeliverEventArgs e)
1695
1695
}
1696
1696
}
1697
1697
1698
+ [ Test ]
1699
+ public void TestQueueRecoveryWithDlxArgument_RabbitMQUsers_hk5pJ4cKF0c ( )
1700
+ {
1701
+ string tdiWaitExchangeName = GenerateExchangeName ( ) ;
1702
+ string tdiRetryExchangeName = GenerateExchangeName ( ) ;
1703
+ string testRetryQueueName = GenerateQueueName ( ) ;
1704
+ string testQueueName = GenerateQueueName ( ) ;
1705
+
1706
+ Model . ExchangeDeclare ( exchange : tdiWaitExchangeName ,
1707
+ type : ExchangeType . Topic , durable : true , autoDelete : false , arguments : null ) ;
1708
+ Model . ExchangeDeclare ( exchange : tdiRetryExchangeName ,
1709
+ type : ExchangeType . Topic , durable : true , autoDelete : false , arguments : null ) ;
1710
+
1711
+ var arguments = new Dictionary < string , object >
1712
+ {
1713
+ { "x-dead-letter-exchange" , "tdi.retry.exchange" } ,
1714
+ { "x-dead-letter-routing-key" , "QueueTest" }
1715
+ } ;
1716
+
1717
+ Model . QueueDeclare ( testRetryQueueName , durable : false , exclusive : false , autoDelete : false , arguments ) ;
1718
+
1719
+ arguments [ "x-dead-letter-exchange" ] = "tdi.wait.exchange" ;
1720
+ arguments [ "x-dead-letter-routing-key" ] = "QueueTest" ;
1721
+
1722
+ Model . QueueDeclare ( testQueueName , durable : false , exclusive : false , autoDelete : false , arguments ) ;
1723
+
1724
+ arguments . Remove ( "x-dead-letter-exchange" ) ;
1725
+ arguments . Remove ( "x-dead-letter-routing-key" ) ;
1726
+
1727
+ Model . QueueBind ( testRetryQueueName , tdiWaitExchangeName , testQueueName ) ;
1728
+
1729
+ Model . QueueBind ( testQueueName , tdiRetryExchangeName , testQueueName ) ;
1730
+
1731
+ var consumerAsync = new EventingBasicConsumer ( Model ) ;
1732
+ Model . BasicConsume ( queue : testQueueName , autoAck : false , consumer : consumerAsync ) ;
1733
+
1734
+ CloseAndWaitForRecovery ( ) ;
1735
+
1736
+ QueueDeclareOk q0 = Model . QueueDeclarePassive ( testRetryQueueName ) ;
1737
+ Assert . AreEqual ( testRetryQueueName , q0 . QueueName ) ;
1738
+
1739
+ QueueDeclareOk q1 = Model . QueueDeclarePassive ( testQueueName ) ;
1740
+ Assert . AreEqual ( testQueueName , q1 . QueueName ) ;
1741
+ }
1742
+
1698
1743
internal bool SendAndConsumeMessage ( string queue , string exchange , string routingKey )
1699
1744
{
1700
1745
using ( var ch = Conn . CreateModel ( ) )
0 commit comments