Quelques fondamentaux.
testés dans tests/rabbitmq
et une instance sur cloud amqp
la base : la queue
les producteurs : creent les messages
les consommateurs : les consomment (lisent et suppriment)
- une connexion est établie sur un channel
- le producteur publie dans une file
le message peut être routé vers une autre file
pour ca on crée un "exchange
dans l'exchange (sur le manager amqp) on indique que les messages sont routés vers une autre file par un binding et une routing key
ex : 2 files, header et detail
on veut que les messages de header soient publiés sur header et detail
ceux de détail sur détail uniquement.
on crée sur cloud amqp (faisable aussi en python avec pika)
- un exchange : contenu
- on cree un binding entre contenu et header avec comme routing key header
- on cree un binding entre contenu et detail avec comme routing key detail
- on cree un 2e binding entre contenu et detail avec comme routing key header
coté python
producer : publie les messages
- sur exchange=contenu , routing key=detail pour les détails
- sur exchange=contenu , routing key=headers pour les headers
consommateur 1 : consomme la queue détail et recoit les messages header et détail
consommateur 2 : consomme la queue header et recoit les messages header uniquement.
-----
autre moyen
utiliser les topic_exchange, encore plus puissants et basés sur les patterns
mais (?) semble ne pas persister les messages. ie si le consumer est lancé après il ne voit que les nouveaux pas les anciens ce qui est casse couille.
A creuser.
https://stackoverflow.com/questions/6148381/rabbitmq-persistent-message-with-topic-exchange
No comments:
Post a Comment