2017-06-12 2 views
0

Ich bin bestrebt, auf die neueste Frühjahr Cloud/Datenfluss/Stream-Release aktualisieren, um die jüngste Ergänzung der Möglichkeit zu erhalten, die Zustellungsmodus Persistenz auf Nachrichten, die am Ende geben in einem Datenfluss-Strom tot-beschriftet sein.DLX (rabbitmq) Routing-Schlüssel Problem mit Spring Cloud-Datenfluss

Ich versuchte die neueste Dalston.SR1-Version und festgestellt, dass Nachrichten am Ende zu den Datenfluss dlq weitergeleitet und als persistent markiert wurden, aber nur wenn die App (z. B. ein Prozessor) standalone ausgeführt wurde.

Wenn die App als Teil eines Datenfluss-Streams ausgeführt wird, werden keine Nachrichten in eine der Dead-Letter-Warteschlangen im Datenfluss-Stream geschrieben. Das Aktivieren der Ablaufprotokollierung für den Frühling amqp zeigte, dass dies auf den falschen Routingschlüssel zurückzuführen war.

Was ich in den Protokollen zu sehen, ist dies:

o.s.amqp.rabbit.core.RabbitTemplate  : Publishing message on exchange [DLX], routingKey = [mystreamname] 

Dies wie ein Bug scheint: der Stream-Name jetzt als Routing-Schlüssel in einer Datenfluß Umgebung während Standalone verwendet wird und zuvor in Datenfluß, es basiert auf dem Warteschlangennamen.

Wurde die rabbitmq Binder-Konfiguration jetzt geändert? Hier ist ein Ausschnitt aus meinem Binder Config für einen Prozessor (nehmen spring.cloud.stream Präfix):

bindings: 
    input: 
     consumer: 
     backOffMultiplier: 1 
     maxAttempts: 1 
     group: mygroup 
    rabbit: 
    bindings: 
     input: 
     consumer: 
      autoBindDlq: true 
      durableSubscription: true 
      republishToDlq: true 
      content-type: application/json 
     output: 
     producer: 
      autoBindDlq: true 
      content-type: application/json 

Dies funktioniert gut in der Produktion mit Camden.SR6 und Datenfluß 1.1.4.RELEASE (abgesehen von den dlq Beharrlichkeit fehlt).

Mache ich etwas falsch, oder gibt es einen Routing-Key-Bug?

Antwort

0

Mir ist keine beabsichtigte Verhaltensänderung bekannt; Bitte öffnen Sie ein GitHub-Problem, damit es untersucht werden kann.

In der Zwischenzeit hat Dalston eine neue Kaninchen-Consumer-Eigenschaft deadLetterRoutingKey, die Sie explizit festlegen können. Sie sollten damit umgehen können.

+0

Der DeadLetterRoutingKey weist die Routing-Schlüssel in rabbitmq zu, aber die Nachrichtenwiederherstellung verwendet immer noch den Stream-Namen. Ich werde später ein Problem ansprechen. – bikerlad

Verwandte Themen