avant-propos
clé de routage correspondante Fuzzy
Il est que vous pouvez utiliser des expressions régulières, et utilisé régulièrement représente un type différent, où « # » signifie tout, tout sens; « * » correspond seulement à un mot. Des exemples seront en mesure de comprendre la lecture.
Des exemples de fonctions quelque chose comme ceci:
Par exemple, vous avez un ami intime, si heureux, triste, au travail ou dans les choses de la vie peut être et elle a dit, il y a quelques amis à la chose fun part, il y a quelques amis, vous pouvez mettre les choses malheureuses et dit-elle.
clés de routage
routages = [ 'happy.work', 'happy.life', 'happy.work.teacher', 'sad.work', 'sad.life', 'sad.work.teacher']
« # »: Correspond à tous les itinéraires clés
"Heureux #": 匹配 'happy.work', 'happy.life', 'happy.work.teacher'
«Les travaux # »: Pas de correspondance
"Happy *.": Match 'happy.work', 'happy.life'
"* .Toute": Match 'happy.work', 'sad.work'
"* # .Toute.": 匹配 'happy.work', 'happy.work.teacher', 'sad.work', 'sad.work.teacher'
code
l'expéditeur
Importez le PIKA nom d' hôte = ' 127.0.0.1 ' Paramètres = pika.ConnectionParameters (nom d' hôte) Connexion = pika.BlockingConnection (Paramètres) # Créer canal canal = connection.channel () # définissent le commutateur, pour définir le type Sujet channel.exchange_declare (= Bourse ' test_queue_topic 'exchange_type = ' sujet ' ) # définir trois touches de routage routages = [ ' happy.work ' ' happy.life ' ' sad.work' ' Sad.life ' ] # messages séquentiellement transmis au commutateur, et définir les clés de routage pour le routage dans routages: message = ' . Message S% ' % routage channel.basic_publish (Exchange = ' test_queue_topic ' , = routage routing_key, le corps = message) Imprimer (message) Connection.close ()
extrémité de réception
Importer SYS, le PIKA nom d' hôte = ' 127.0.0.1 ' Paramètres = pika.ConnectionParameters (nom d' hôte) Connexion = pika.BlockingConnection (Paramètres) # Créer canal canal = connection.channel () # définissent le commutateur, pour définir le type sujet channel.exchange_declare (Exchange = « test_queue_topic » , exchange_type = « sujet » ) # obtenir les clés de routage à partir des paramètres de ligne de commande, et sinon, d' information placer routages le sys.argv = [1. :] sI pas routages: routages = [ 'd' info « ] # génèrent une file d' attente temporaire, le résultat = channel.queue_declare (file d' attente = » test_queue_topic ' , exclusif = true) # exclusive = True sortie lorsque l'extrémité de réception de cette file d' attente sera détruit temporairement créé nom_file = result.method.queue pour le routage dans routages: # lié à l'interrupteur, les clés de routage fournies channel.queue_bind (Exchange = ' test_queue_topic ' , Queue queue_name =, = routing_key routage) DEF le rappel (CH, méthode, propriétés, corps): Print ( " [X] Reçues R & lt% " % (corps)) channel.basic_consume ( File d' attente = « test_queue_topic » , # préciser le nom de la file d' attente on_message_callback = le rappel, # faire passer des messages de la file d' attente auto_ack = False # tâche de MQ serveur de prévention de la perte ) Imprimer ( ' [*] attente pour les messages. Appuyez sur Quitter la Pour la touche CTRL C + ' ) channel.start_consuming ()
code d'essai
l'expéditeur
extrémité de réception
travail
content
tous