美文网首页
话题模式 Topic

话题模式 Topic

作者: forjie | 来源:发表于2019-06-12 18:08 被阅读0次

    话题模式(Topic)基本思想和路由模式是一样的,只不过路由键支持模糊匹配,符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词

    话题模式相当于消息的模糊匹配,或者按照正则匹配。其中

    # 是通配符,匹配一个或者多个单词

    * 代表匹配一个单词

    • send.py
    #!/usr/bin/env python
    import pika
    import sys
    
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
    channel = connection.channel()
    
    channel.exchange_declare(exchange='topic_logs',
                             exchange_type='topic')
    
    routing_key = ['#', "kern.critical", "A critical kernel error"]
    for i in range(10):
        message = '{} msg at : routing key {}'.format(i, routing_key[i % 3])
        channel.basic_publish(exchange='topic_logs',
                              routing_key=routing_key[i % 3],
                              body=message)
        print(" [x] Sent :%r" % (message))
    connection.close()
    
    • receiver.py
    import pika
    import sys
    
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
    channel = connection.channel()
    
    channel.exchange_declare(exchange='topic_logs',
                             exchange_type='topic')
    
    result = channel.queue_declare(queue='',exclusive=True)
    queue_name = result.method.queue
    
    binding_key = "#"
    
    channel.queue_bind(exchange='topic_logs',
                       queue=queue_name,
                       routing_key=binding_key)
    
    print(' [*] Waiting for logs. To exit press CTRL+C')
    
    def callback(ch, method, properties, body):
        print(" [x] %r:%r" % (method.routing_key, body))
    
    channel.basic_consume(callback,
                          queue=queue_name,
                          no_ack=True)
    
    channel.start_consuming()
    

    相关文章

      网友评论

          本文标题:话题模式 Topic

          本文链接:https://www.haomeiwen.com/subject/pykrfctx.html