2016-05-28 10 views
1

Im Frühjahr AMQP-Projekt, Wenn MessageProperties MessageId nicht haben, erstellen sie immer messageId.Warum brauchen Sie MessageId in AMQP?

Like This ..

if (this.createMessageIds && messageProperties.getMessageId()==null) { 
    messageProperties.setMessageId(UUID.randomUUID().toString()); 
} 

Ich möchte wissen, was messageId ist. Also versuche ich herauszufinden, wo messageId verwendet wird. Aber ich konnte es nicht in Spring AMQP Source finden.

Was passiert, wenn messageId nicht existiert? Warum wird in AMQP messageId benötigt?

Antwort

2

Die Nachrichten-ID wird nur erstellt, wenn der Konverter createMessageIds wahr ist - standardmäßig ist er falsch.

Normalerweise ist dies nicht erforderlich, es sei denn, Sie verwenden eine statusbehaftete Wiederholung auf der Verbraucherseite.

Bei Verwendung von statusbehaftetem Wiederholungsversuch und fehlgeschlagener Zustellung wird die Nachricht vom Broker zurückgewiesen und erneut bereitgestellt. Da RabbitMQ nicht die Anzahl der Wiederholungen in einer Kopfzeile enthält, müssen wir verfolgen, wie oft die Lieferung versucht wurde, so dass wir aufgeben können, nachdem die maxAttempts erreicht wurde. Die Nachrichten-ID wird verwendet, um den Wiederholungsstatus für diese Nachricht zu suchen.