@@ -82,21 +82,23 @@ public void TestRecoverAfterCancel_()
82
82
UTF8Encoding enc = new UTF8Encoding ( ) ;
83
83
Channel . BasicPublish ( "" , Queue , null , enc . GetBytes ( "message" ) ) ;
84
84
EventingBasicConsumer Consumer = new EventingBasicConsumer ( Channel ) ;
85
- SharedQueue < BasicDeliverEventArgs > EventQueue = new SharedQueue < BasicDeliverEventArgs > ( ) ;
86
- Consumer . Received += ( _ , e ) => EventQueue . Enqueue ( e ) ;
85
+ SharedQueue < ( bool Redelivered , byte [ ] Body ) > EventQueue = new SharedQueue < ( bool Redelivered , byte [ ] Body ) > ( ) ;
86
+ // Making sure we copy the delivery body since it could be disposed at any time.
87
+ Consumer . Received += ( _ , e ) => EventQueue . Enqueue ( ( e . Redelivered , e . Body . ToArray ( ) ) ) ;
87
88
88
89
string CTag = Channel . BasicConsume ( Queue , false , Consumer ) ;
89
- BasicDeliverEventArgs Event = EventQueue . Dequeue ( ) ;
90
+ ( bool Redelivered , byte [ ] Body ) Event = EventQueue . Dequeue ( ) ;
90
91
Channel . BasicCancel ( CTag ) ;
91
92
Channel . BasicRecover ( true ) ;
92
93
93
94
EventingBasicConsumer Consumer2 = new EventingBasicConsumer ( Channel ) ;
94
- SharedQueue < BasicDeliverEventArgs > EventQueue2 = new SharedQueue < BasicDeliverEventArgs > ( ) ;
95
- Consumer2 . Received += ( _ , e ) => EventQueue2 . Enqueue ( e ) ;
95
+ SharedQueue < ( bool Redelivered , byte [ ] Body ) > EventQueue2 = new SharedQueue < ( bool Redelivered , byte [ ] Body ) > ( ) ;
96
+ // Making sure we copy the delivery body since it could be disposed at any time.
97
+ Consumer2 . Received += ( _ , e ) => EventQueue2 . Enqueue ( ( e . Redelivered , e . Body . ToArray ( ) ) ) ;
96
98
Channel . BasicConsume ( Queue , false , Consumer2 ) ;
97
- BasicDeliverEventArgs Event2 = EventQueue2 . Dequeue ( ) ;
99
+ ( bool Redelivered , byte [ ] Body ) Event2 = EventQueue2 . Dequeue ( ) ;
98
100
99
- CollectionAssert . AreEqual ( Event . Body . ToArray ( ) , Event2 . Body . ToArray ( ) ) ;
101
+ CollectionAssert . AreEqual ( Event . Body , Event2 . Body ) ;
100
102
Assert . IsFalse ( Event . Redelivered ) ;
101
103
Assert . IsTrue ( Event2 . Redelivered ) ;
102
104
}
0 commit comments