/ / rabbitmq drop message wenn ein bestimmter Feldwert nicht eindeutig ist? - rabbitmq, amqp

rabbitmq drop message, wenn ein bestimmter Feldwert nicht eindeutig ist? - Kaninchenmq, amqp

Ich verwende eine ampq-Warteschlange mit meinem Webcrawler. Jede Crawlerinstanz erhält eine URL zum Crawlen einer Nachricht in der Warteschlange und fügt die gefundenen URLs zur Warteschlange hinzu.

Da es mehrere Crawler-Instanzen geben wird, kann jeder dieselbe URL finden und zur Warteschlange hinzufügen.

Gibt es eine integrierte Möglichkeit, rabbitmq anzuweisen, die Nachricht zu löschen, wenn die URL bekannt ist, oder die Warteschlange zu überprüfen, wenn bereits eine Nachricht mit der URL vorhanden ist?

Antworten:

8 für die Antwort № 1

Nein. Es gibt keine Möglichkeit, die Eindeutigkeit von Nachrichten mit dem RabbitMQ-Mechanismus zu überprüfen.

AMQP-Warteschlangen und insbesondere RabbitMQ-Warteschlangen sind reine FIFO-Warteschlangen.

Wahrscheinlich müssen Sie die Eindeutigkeitsprüfung auf der Anwendungsseite implementieren.

P.S .:

Es gibt eine raffinierte Problemumgehung, um Warteschlangen mit demselben Namen wie das eindeutige Feld (oder das Hash) mit zu deklarieren x-max-length auf 1 gesetzt, damit Duplikate verloren gehen, falls vorhandenunverarbeitete Nachricht in der Warteschlange. Dies erfordert jedoch viele Warteschlangen mit URLs (eindeutiges Feld - URL-Hash) und ist daher nicht die beste Lösung, insbesondere wenn es darum geht, all diese Nachrichten aus Tausenden von Warteschlangen mit nicht offensichtlichen Namen zu konsumieren.