RabbitMQ de clé de routage correspondante floue

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

 

Je suppose que tu aimes

Origine www.cnblogs.com/SR-Program/p/12623560.html
conseillé
Classement