Vielleicht bin ich dumm, die Frage zu stellen, aber ich muss meinen Kopf um die grundlegenden Konzepte wickeln, bevor ich weiterarbeite.Sellerie - Kann eine Nachricht in RabbitMQ von zwei oder mehr Arbeitern gleichzeitig konsumiert werden?
Ich verarbeite ein paar tausend RSS-Feeds, mit mehreren Sellery Worker-Knoten und einem RabbitMQ-Knoten als Broker. Die URL jedes Feeds wird als Nachricht in die Warteschlange geschrieben. Ein Worker liest nur die URL aus der Warteschlange und beginnt mit der Verarbeitung. Ich muss sicherstellen, dass ein einzelner RSS-Feed nicht von zwei Arbeitern gleichzeitig verarbeitet wird.
Der Artikel Ensuring a task is only executed one at a time schlägt eine Memcahced-basierte Lösung zum Sperren des Feeds vor, wenn es verarbeitet wird.
Aber was ich versuche zu verstehen, ist, warum muss ich Memcached (oder etwas anderes) verwenden, um sicherzustellen, dass eine Nachricht in einer RabbitMQ-Warteschlange nicht von mehreren Arbeitern zur gleichen Zeit konsumiert werden. Gibt es einige Konfigurationsänderungen in RabbitMQ (oder Sellerie), die ich tun kann, um dieses Ziel zu erreichen?
Es besteht ein Unterschied zwischen dem Sperren der Nachrichten und Sperren der Feeds. Was musst du tun? –
@PlatinumAzure - etwas erklären?Ich muss die Nachricht sperren (wenn das bedeutet sicherzustellen, dass sie nicht von mehreren Arbeitern konsumiert wird). – rubayeet