Wie man Spring-RabbitMQ zum erstellen einer neuen Warteschlange?
In meine (begrenzte) Erfahrung mit rabbit-mq, wenn Sie einen neuen listener für eine Warteschlange, die noch nicht existiert, wird die Warteschlange automatisch erstellt. Ich versuche, das Spring AMQP-Projekt mit rabbit-mq um einen listener einrichten, und ich bekomme eine Fehlermeldung statt. Das ist meine xml config:
<rabbit:connection-factory id="rabbitConnectionFactory" host="172.16.45.1" username="test" password="password" />
<rabbit:listener-container connection-factory="rabbitConnectionFactory" >
<rabbit:listener ref="testQueueListener" queue-names="test" />
</rabbit:listener-container>
<bean id="testQueueListener" class="com.levelsbeyond.rabbit.TestQueueListener">
</bean>
Bekomme ich diese in meine RabbitMq-Protokolle:
=ERROR REPORT==== 3-May-2013::23:17:24 ===
connection <0.1652.0>, channel 1 - soft error:
{amqp_error,not_found,"no queue 'test' in vhost '/'",'queue.declare'}
Und eine ähnliche Fehlermeldung von AMQP:
2013-05-03 23:17:24,059 ERROR [org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer] (SimpleAsyncTaskExecutor-1) - Consumer received fatal exception on startup
org.springframework.amqp.rabbit.listener.FatalListenerStartupException: Cannot prepare queue for listener. Either the queue doesn't exist or the broker will not allow us to use it.
Scheint es aus dem stack-trace, die Warteschlange wird immer erstellt, in eine "passive" - Modus - Kann mir jemand zeigen, wie ich das schaffen würde die Warteschlange nicht mit dem passiv-Modus, so sehe ich nicht diesen Fehler? Oder übersehe ich etwas anderes?
InformationsquelleAutor eric | 2013-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Älterer thread, aber das zeigt noch bis ziemlich hoch auf Google, also hier ein paar neuere Informationen:
2015-11-23
Seit Frühjahr 4.2.x mit Feder-Messaging-und Spring-Amqp 1.4.5.RELEASE und Spring-Kaninchen 1.4.5.RELEASE, erklärt exchanges, queues und bindings hat sich sehr einfach durch ein @Configuration-Klasse einige Anmerkungen:
Einige Quellen und Dokumentation zu helfen:
Hinweis: Sieht aus wie vermisste ich eine version-beginnend mit Spring AMQP 1.5, werden die Dinge sogar noch einfacher, da können Sie erklären, die volle Bindung direkt an den Hörer!
InformationsquelleAutor Jaymes Bearden
Dem, was schien zu beheben, mein Problem war das hinzufügen von ein admin. Hier ist mein xml:
RabbitAdmin
zu deiner config auf auto-deklariert queues, exchanges, Bindungen.Auch die Warteschlange nicht erklärt werden, bis eine Nachricht gesendet wird.
Es arbeitete in Java-annotation-Modus: hinzufügen eines autowired
AmqpAdmin
und Deklaration der Warteschlange mit der entsprechenden Methode autocreates der Warteschlange, wenn Sie nicht vorhanden !Mit dem rabbit:listener-element, wie kann man Kaninchen zu erklären, eine zufällig benannte queue zur Verwendung mit einem fanout exchange?
InformationsquelleAutor eric
Können Sie fügen Sie diese, nach Ihrer Verbindung-tag, aber bevor der Hörer:
Leider, nach dem XSD-schema, das passive Attribut (siehe oben) ist nicht gültig. Jedoch, in jedem queue_declare Umsetzung, die ich gesehen habe, passiv wurde eine gültige queue_declare parameter. Ich bin gespannt, ob das funktionieren wird oder ob Sie planen, Sie zu unterstützen in Zukunft.
Hier ist die vollständige Liste der Optionen für eine Warteschlange Erklärung:
http://www.rabbitmq.com/amqp-0-9-1-reference.html#class.queue
Und hier ist die vollständige XSD-für die spring-Kaninchen-schema (mit Kommentaren):
http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd
Bitte Lesen Sie meine Antwort genauer.
Sorry, ich bin dicht - ich sehe nicht, was mir fehlt. Ich sehe, dass Sie sagen, es ist nicht gültiges xml nach xsd und ich kann den Fehler ignorieren eclipse gibt mir - aber ich habe tatsächlich einen Laufzeitfehler erhalten, als gut.
Das ist in Ordnung. Mein zweiter Vorname ist dicht. 🙂 Ich denke, wir können sagen das gleiche. IMHO, die über passive parameter sollte vorhanden sein, wenn es eine volle Kaninchen-Schnittstelle. Spring-RabbitMQ ist fehlt es. Würde ich einen bug-report mit Sie und link zurück zu dieser Frage in Ihrem bug-Bericht. Sie wissen vielleicht etwas, dass wir beide fehlt oder kann es nur eine legitime Auslassung.
Getan, jira.springsource.org/browse/AMQP-311, vielen Dank für Ihre Hilfe!
InformationsquelleAutor Homer6