2015-04-17 12 views
5

Non riesco a trovare questa informazione da nessuna parte o forse non la capisco. Nel modello publish/subscribe in RabbitMQ, quando un produttore produce un messaggio, come fa il consumatore a sapere che c'è un nuovo messaggio nella coda?RabbitMQ: In pub/sub è il consumatore che esegue il polling della coda per i nuovi messaggi o il server invia messaggi?

Gli utenti interrogano costantemente la coda per verificare se ci sono nuovi messaggi o la notifica 'push' di scambio ai consumatori che dicono che c'è un nuovo messaggio?

+0

Vedere anche la risposta [this] (http://stackoverflow.com/a/31591953/751579) che spiega come funziona _consuming_ un messaggio: server push e il client riceve una richiamata asincrona. – davidbak

risposta

4

Consumer apre una connessione TCP di rete e un canale al server RabbitMQ.

A basic get chiederà al server un messaggio: il messaggio viene prelevato dal client dal server. Se nessun messaggio è disponibile, viene inviata una risposta vuota al client.

A consume avvia uno scenario consumer: il server invia messaggi al client.

Così il consumatore saprà che c'è un messaggio perché può tirarli (ottenere) o possono essere spinti a lui (consumare).

La notifica "push" di scambio ai consumatori che dice che c'è un nuovo messaggio ?

Lo scambio viene utilizzato per il routing alle code. Non spingono nulla mentre i consumatori consumano dalle code.

Problemi correlati