2013-07-23 18 views

risposta

56

La differenza è che una presa PUB invia lo stesso messaggio a tutti abbonati, mentre PUSH fa un round-robin tra tutti i suoi collegati PULL prese.

Nel tuo esempio, se invii solo un singolo messaggio dalla radice, tutti gli utenti lo riceveranno (salvo gli abbonati lenti, ecc.) Ma solo 1 lavoratore.

Il modello pub/sub viene utilizzato per la distribuzione ampia dei messaggi in base agli argomenti. Il modello push/pull è davvero un meccanismo di pipeline. Il tuo esempio push/pull sembra tentare di eseguire il bilanciamento del carico, il che va bene, ma req/rep potrebbe essere più adatto a questo a causa di altri problemi.

Sembra che i "problemi" qui sono descritti nella stessa parte del 0MQ guidare avete ottenuto l'immagine da: push/pull ventilator example

+4

Vorrei anche conoscere la differenza in termini di messaggi persi ... vale a dire ciò che accadrebbe se il server PUB o PUSH un messaggio e il client [1] perdesse connessione e riconnettersi [2] il client fosse collegato tutto il tempo ma il client era occupato a fare lavoro e non era in .recv() – Bhuvan

+1

'SUB' e' PULL' socket hanno in comune la proprietà che consumano dai messaggi disponibili anche quando il codice client non sta facendo un 'recv', quindi nel tuo esempio, il client [2] otterrebbe i messaggi in entrambi i casi, e il client [1] inizierà a ricevere nuovi messaggi quando si ricollega. È importante sottolineare che nessuno dei due tipi di socket è "indirizzato" a un particolare client. – SteveLove

+1

dove stai ottenendo questa informazione .... colpisci e prova con zeroMQ o hai trovato qualche risorsa interessante? – Bhuvan