RabbitMQ ha un modello molto flessibile, che consente una vasta gamma di scenari di routing a prendere posto.
- Ho bisogno di dividere il messaggio in qualche coda. per qualche lavoro pesante. Posso aggiungere più thread di lavoro per loro.
Sì, questo è supportato tramite uno scambio diretto. Pubblica un messaggio utilizzando una chiave di routing uguale al nome della coda. Per praticità, supponiamo di utilizzare il nome dell'oggetto completo (ad esempio MyApp.Objects.DataTypeOne
). Tutto ciò che devi fare è sottoscrivere più processi di consumo in questa coda e RabbitMQ eseguirà il bilanciamento del carico utilizzando un approccio round-robin.
- Ma per alcuni non molto lavoro pesante. Posso lasciare che il singolo consumatore iscriva il loro messaggio.
Sì, lo puoi fare anche tu. Lo stesso processo del paragrafo precedente. Basta non collegare più processi di consumo.
Ho trovato questa immagine è molto simile al mio modello di business.
Il diagramma non è molto utile, in quanto manca di informazioni sul tipo di messaggi pubblicati. In questo senso, è solo un diagramma di interconnessione. Le linee interessanti sono quelle che collegano le code allo scambio, in quanto è ciò che specifichi all'interno di RabbitMQ tramite Queue Bindings. Puoi anche collegare gli scambi tra loro, ma è un po 'più lontano di quello che probabilmente dovremmo fare.
Tutto il resto del diagramma è completamente sotto il tuo controllo come utente del sistema RabbitMQ/AMQP. È possibile creare un numero arbitrario di editori e disporre di un numero arbitrario di processi di consumo che consumano ciascuno da un numero arbitrario di code. Non ci sono limiti duri e veloci, anche se ci sono alcuni aspetti pratici che probabilmente vorrai pensare per garantire che il tuo sistema sia manutenibile.
Consulta le esercitazioni [Getting Started] (http://www.rabbitmq.com/getstarted.html). Quando ho guardato per la prima volta RabbitMQ, ho trovato i loro tutorial e mi hanno aiutato a essere davvero bravo. In particolare, controlla la sezione [Argomenti] (http://www.rabbitmq.com/tutorials/tutorial-five-python.html), ad esempio puoi sottoscrivere più code in base a una chiave di routing. – AdaTheDev