ich erstellt habe mit dem RabbitMQ Web-UI ein Thema Austausch TX und binden an den Austausch zwei Warteschlangen TX.Q1 und TX.Q2, die jeweils gebunden mit Routing-Tasten rk1 und rk2 entsprechend, und produzierte wenige Nachrichten an den Austausch.Bind RabbitMQ Verbraucher mit Spring Cloud-Stream einer bestehenden Warteschlange
Jetzt möchte ich einen Verbraucher mit Spring Cloud Stream erstellen, die nur Nachrichten von Q1 nehmen wird. Ich versuchte Konfiguration mit:
spring.cloud.stream.bindings.input.destination=TX
spring.cloud.stream.bindings.input.group=Q1
und die Anmerkung @StreamListner(Sink.INPUT)
für die Methode, die Nachrichten verbraucht.
Als Ergebnis kann ich sehen, dass der Verbraucher eine Warteschlange (oder Bindung) mit dem gleichen Namen TX.Q1 erstellt hat, aber der Routing-Key der neuen Queue/bind ist #.
Wie kann ich über Spring Cloud Stream einen Consumer konfigurieren, der Nachrichten aus der vordefinierten Warteschlange konsumiert (nur das Routing mit rk1).
Sie meinen also, dass mit Spring Cloud Stream ich nicht einen Verbraucher an bestimmte vordefinierte (nicht anonyme) Warteschlange binden kann, die einen Routing-Schlüssel hat? –
Ja, ich denke schon. –
Ich habe gerade getestet und wir fügen eine zweite Bindung hinzu; Ich denke, das ist ein Fehler - wenn die Warteschlange bereits existiert, sollten wir nicht die generische ('#' Platzhalterbindung) hinzufügen. Als Umgehung können Sie anstelle eines '@ StreamListener' einen' @ RabbitListener' verwenden (es sei denn, Sie verwenden den Stream-Listener für die Konvertierung). Ich öffnete [und veröffentliche dafür] (https://github.com/spring-cloud/spring-cloud-stream-binder-rabbit/issues/34). –