File tree 3 files changed +32
-4
lines changed
main/java/com/rabbitmq/client/amqp
test/java/com/rabbitmq/client/amqp/impl
3 files changed +32
-4
lines changed Original file line number Diff line number Diff line change @@ -71,8 +71,9 @@ public interface Management extends AutoCloseable {
71
71
* Purge (delete all messages) from a queue.
72
72
*
73
73
* @param queue queue to delete messages from
74
+ * @return the status of the purge operation
74
75
*/
75
- void queuePurge (String queue );
76
+ PurgeStatus queuePurge (String queue );
76
77
77
78
/**
78
79
* Start exchange specification.
@@ -948,4 +949,14 @@ interface QueueInfo {
948
949
*/
949
950
int consumerCount ();
950
951
}
952
+
953
+ interface PurgeStatus {
954
+
955
+ /**
956
+ * The number of messages purged from the queue.
957
+ *
958
+ * @return the number of messages purged
959
+ */
960
+ long messageCount ();
961
+ }
951
962
}
Original file line number Diff line number Diff line change @@ -183,11 +183,13 @@ public UnbindSpecification unbind() {
183
183
}
184
184
185
185
@ Override
186
- public void queuePurge (String queue ) {
186
+ public PurgeStatus queuePurge (String queue ) {
187
187
Map <String , Object > responseBody = delete (queueLocation (queue ) + "/messages" , CODE_200 );
188
- if (!responseBody .containsKey ("message_count" )) {
188
+ if (!responseBody .containsKey ("message_count" )
189
+ && !(responseBody .get ("message_count" ) instanceof Number )) {
189
190
throw new AmqpException ("Response body should contain message_count" );
190
191
}
192
+ return new DefaultPurgeStatus (((Number ) responseBody .get ("message_count" )).longValue ());
191
193
}
192
194
193
195
void setToken (String token ) {
@@ -856,4 +858,18 @@ enum State {
856
858
UNAVAILABLE ,
857
859
CLOSED
858
860
}
861
+
862
+ private static final class DefaultPurgeStatus implements PurgeStatus {
863
+
864
+ private final long messageCount ;
865
+
866
+ private DefaultPurgeStatus (long messageCount ) {
867
+ this .messageCount = messageCount ;
868
+ }
869
+
870
+ @ Override
871
+ public long messageCount () {
872
+ return this .messageCount ;
873
+ }
874
+ }
859
875
}
Original file line number Diff line number Diff line change @@ -725,7 +725,8 @@ void queuePurgeShouldRemoveAllMessages(TestInfo info) {
725
725
.forEach (ignored -> publisher .publish (publisher .message (), callback ));
726
726
assertThat (publishSync ).completes ();
727
727
assertThat (management .queueInfo (q )).hasMessageCount (messageCount );
728
- management .queuePurge (q );
728
+ Management .PurgeStatus purgeStatus = management .queuePurge (q );
729
+ org .assertj .core .api .Assertions .assertThat (purgeStatus .messageCount ()).isEqualTo (messageCount );
729
730
assertThat (management .queueInfo (q )).isEmpty ();
730
731
}
731
732
You can’t perform that action at this time.
0 commit comments