Non esiste un comportamento predefinito di afaik per il tuo caso. Potresti creare un plugin o affidarti alla logica del client che è lo scopo della mia risposta.
E 'importante sapere che coda di RabbitMQ dichiarare/bind è una coda di Declare idempotent operation
, creare se il metodo needed.This crea o controlla una coda. Durante la creazione di una nuova coda il client può specificare varie proprietà che controllano la durata della coda e il suo contenuto e il livello di condivisione per la coda.
ipotesi 1: le code non possono essere cancellati o code possono essere eliminati, ma i clienti lo sapranno, il set di coda può rientrare nella memoria
Ogni cliente mantiene un insieme di code. Prima di inviare un messaggio, il client controlla se il set contiene la coda. In caso contrario, dichiara e associa la coda e inserisce la coda nel set.
Al bootstrap, il set di code può essere inizializzato con le code esistenti usando per esempio il HTTP API (ad es. Un java client)
Come fare dipende dal vostro client RabbitMQ. Ad esempio, utilizzando spring-amqp, è possibile estendere e sovrascrivere RabbitTemplate#doSend
ipotesi 2: le code possono essere cancellati e clienti non si sa
Come suggerito da GeekChick è possibile registrare un ReturnListener
.Tutto messaggio deve essere inviata con la mandatory flag
ipotesi 3: Non mi importa il costo di dichiarare coda/bind *
Hai sempre, prima di inviare un messaggio, dichiara e legare la coda. AFAIK il costo, una volta creato, dovrebbe essere più o meno uguale al footprint di rete + alla ricerca della mappa.
fonte
2015-04-14 04:35:38
In JMS non saprei - se fosse .NET, suggerirei di usare il pacchetto HareDU come punto di partenza per verificare se la coda è già presente. https://github.com/ahives/HareDu – Paul
Non voglio fare un hit API esplicito per verificare se la coda esiste o no, ma voglio verificare se c'è un modo per modificare il comportamento predefinito dello scambio per creare un coda se non presente già. – Rahul
@rahulroc, http://stackoverflow.com/questions/21265242/dynamic-queue-creation-with-rabbitmq questo potrebbe aiutarti –