Ich folge dem folgenden Tutorial zum Buchstaben: https://www.rabbitmq.com/tutorials/tutorial-two-java.html.Wie kann ich RabbitMQ unbestätigte Nachrichten zurückgeben?
starte ich den RabbitMQ Server als solche:
docker pull rabbitmq
docker run -d --hostname my-rabbit-host --name my-rabbit -p 5672:5672 rabbitmq:3
aus dem Tutorial:
diesen Code verwenden, können wir sicher sein, dass, auch wenn Sie einen Arbeiter mit STRG + C, während sie töten Verarbeitete eine Nachricht, nichts wird verloren gehen. Bald , nachdem der Arbeiter stirbt, werden alle unbestätigten Nachrichten erneut übermittelt.
ich laichen zwei Verbraucher, und wenn ich STRG + C einer von ihnen, der andere läuft man tut nicht erhalten die Nachrichten, die ursprünglich auf dem ehemaligen Verbraucher bestimmt waren. Wie bekomme ich die Nachrichten erneut zugestellt, nachdem STRG + C aus einem der Verbraucher?
Edit: Ich installiere jetzt RabbitMQ über 'brauen', aber ich sehe immer noch das gleiche Problem.
brew update
brew install rabbitmq
/usr/local/sbin/rabbitmq-server &
Von dem, was Sie beschreiben, sollte es Out-of-the-Box funktionieren. Hast du anstelle des 'DoWork'-Zeugs geschlafen und den Konsumenten während des Schlafes gestoppt? (offensichtlich, sobald die Nachricht "basicAcked" ist, wird es nicht erneut an jeden Verbraucher geliefert). Sind Sie sicher, dass der andere Verbraucher tatsächlich konsumiert? – user1527491
Richtig - Ich habe kurz vor dem Acking geschlafen. Ich CTRL + C während des Schlafes. Ich drucke die Nachricht im callDelivery() Callback des Consumers, aber es kommt nie durch. – Phillip
Wenn Sie beide Verbraucher verbrauchen, empfangen sie Nachrichten gleichmäßig oder ist es immer das gleiche, das die Nachrichten empfängt? Wenn es immer derselbe Verbraucher ist, könnte dies ein Zeichen dafür sein, dass der zweite Verbraucher nicht richtig konfiguriert ist (z. B. nicht korrekt an die Warteschlange gebunden). Um noch sicherer zu sein, legen Sie einige Nachrichten in die Warteschlange und stellen Sie sicher, dass beide gleichzeitig konsumieren. Verwenden Sie außerdem das Bild "rabbitmq: 3-management" docker (+ weiter 15672 und öffnen Sie Ihren Browser, der Benutzername ist 'guest' und das Passwort ist' guest'), um herauszufinden, was mit der Nachricht in der Warteschlange tatsächlich passiert. – user1527491