Szenario
Wir befinden uns in einem Integrationstestszenario, in dem wir herumreichen ein wiederverwendbarer RabbitMQ-Testcontainer. Zwischen den Testläufen möchten wir den Container leeren.
Techstack
- RabbitMQ Docker Testcontainer (org.testcontainers:rabbitmq :1.19.3)
- Spring AMQP Client (org.springframework.amqp:spring-amqp:3.1.1)
Das Löschen einer einzelnen Warteschlange ist mit spring-amqp einfach. Die Verwaltung aller Warteschlangen über die Befehlszeile ist möglich. Aber RabbitMQ behält die nicht gepackten Nachrichten beim Löschen bei. Dies könnte natürlich den nächsten Testlauf beeinträchtigen, daher müssen wir auch diese nicht gepackten Nachrichten löschen.
Was wir tun müssen
Das müssen wir tun Finden Sie die offenen Kanäle, schließen Sie sie, um die Nachrichten zu löschen, und löschen Sie dann die Warteschlange. Jede Warteschlange. Hat jemand ein Bash-Skript dafür? Oder gibt es eine einfache Lösung, wie das Löschen des Testcontainers selbst in Java mit einem einzigen Aufruf?