Es gibt kein afaik defaut-Verhalten für Ihren Fall. Sie könnten ein Plugin erstellen oder Sie könnten sich auf die Client-Logik verlassen, die der Zweck meiner Antwort ist.
Es ist wichtig, dass RabbitMQ Warteschlange declare/bind zu wissen, ist eine idempotent operation
Declare Warteschlange erstellen, wenn needed.This Methode erstellt oder prüft eine Warteschlange. Beim Erstellen einer neuen Warteschlange kann der Client verschiedene Eigenschaften angeben, die die Dauerhaftigkeit der Warteschlange und ihres Inhalts sowie die Freigabeebene für die Warteschlange steuern.
Hypothese 1: Warteschlangen nicht gelöscht oder Warteschlangen gelöscht werden können werden können, aber Clients wird es wissen, kann der Warteschlangensatz
Jeder Client verwaltet einen Satz von Warteschlangen in den Speicher passen. Vor dem Senden einer Nachricht überprüft der Client, ob der Satz die Warteschlange enthält. Wenn dies nicht der Fall ist, wird die Warteschlange deklariert und gebunden und die Warteschlange in die Gruppe eingefügt.
Bei Bootstrap kann die Warteschlangen-Set mit den vorhandenen Warteschlangen zum Beispiel unter Verwendung initialisiert wird die HTTP API (z. B. ein java client)
Wie es auf Ihrem RabbitMQ Client zu tun, hängt davon ab. Zum Beispiel mit spring-amqp, können Sie erweitern und RabbitTemplate#doSend
Hypothese überschreiben 2: Warteschlangen gelöscht werden können und Kunden wissen nicht
Wie GeekChick vorgeschlagen, dass Sie ein ReturnListener
registrieren.Alle Nachricht muss mit der mandatory flag
Hypothese 3 gesendet werden: Ich kümmere mich nicht um die Kosten von declare/bind Warteschlange *
Sie immer, bevor Sie eine Nachricht zu senden, erklären und die Warteschlange binden. AFAIK die einmal erstellten Kosten sollten mehr oder weniger dem Netzwerk-Footprint + Karten-Lookup entsprechen.
In JMS würde ich nicht wissen - wenn es .NET wäre, würde ich vorschlagen, das HareDU-Paket als Ausgangspunkt zu verwenden, um zu überprüfen, ob die Warteschlange bereits vorhanden ist. https://github.com/ahives/HareDu – Paul
Ich möchte nicht einen expliziten API-Treffer machen, um zu überprüfen, ob die Warteschlange existiert oder nicht, aber ich möchte überprüfen, ob es eine Möglichkeit gibt, das Standardverhalten von Exchange zu ändern, um ein zu erstellen Warteschlange, wenn nicht bereits vorhanden. – Rahul
@rahulroc, http://stackoverflow.com/questions/21265242/dynamic-queue-creation-with-rabbitmq das könnte Ihnen helfen –