zoukankan      html  css  js  c++  java
  • rabbitMQ实战(一)---------使用pika库实现hello world

    rabbitMQ实战(一)---------使用pika库实现hello world

    2016-05-18 23:29 本站整理 浏览(267)
     
     
    pika是RabbitMQ团队编写的官方Python AMQP库。需要先安装pika:pip3 install pika有较详细的注释,就不再详细说明了生产者代码:hello_world_producer.py:
    import pika,sys
    
    #connect to the rabbitmq,use the default vhost
    credentials = pika.PlainCredentials("guest","guest")
    conn_params = pika.ConnectionParameters("localhost",
                                            credentials=credentials)
    conn_broker = pika.BlockingConnection(conn_params)
    
    #get a channel used to communicate with the rabbitmq
    channel = conn_broker.channel()
    
    #declare a exchange
    channel.exchange_declare(exchange='hello-exchange',
                             type='direct',
                             passive=False, #if the exchange already existes,report a error.It means we want to declare an exchange.
                             durable=True, #durable the message
                             auto_delete=False) #if the last consumer is over,do not delete the exchange auto
    
    #create a message
    msg = sys.argv[1]
    msg_props = pika.BasicProperties()
    msg_props.content_type = "text/plain"
    #publish the message
    channel.basic_publish(body=msg,
                          exchange='hello-exchange',
                          properties=msg_props,
                          routing_key='hola')
    
    
    消费者代码
    hello_world_consumer.py:
    import pika
    
    #connect to the rabbitmq,use the default vhost
    credentials = pika.PlainCredentials("guest","guest")
    conn_params = pika.ConnectionParameters("localhost",
                                            credentials=credentials)
    conn_broker = pika.BlockingConnection(conn_params)
    
    #get a channel used to communicate with the rabbitmq
    channel = conn_broker.channel()
    
    #declare a exchange
    channel.exchange_declare(exchange='hello-exchange',
                             type='direct',
                             passive=False, #if the exchange already existes,report a error.It means we want to declare an exchange.
                             durable=True, #durable the message
                             auto_delete=False) #if the last consumer is over,do not delete the exchange auto
    
    #declare a queue
    channel.queue_declare(queue="hello-queue")
    
    #bind queue to an exchange
    channel.queue_bind(queue='hello-queue',
                       exchange='hello-exchange',
                       routing_key='hola')
    
    #define the consumer method to consumer message from a queue
    def msg_consumer(channel,method,header,body):
        channel.basic_ack(delivery_tag=method.delivery_tag)
        if body.decode("ascii") == "quit":
            channel.basic_cancel(consumer_tag='hello-consumer')
            channel.stop_consuming()
        else:
            print(body)
        return
    #subscribe message
    channel.basic_consume(msg_consumer,
                          queue='hello-queue',
                          consumer_tag='hello-consumer')
    #begin loop until a quit message is sent
    channel.start_consuming()
    
    
    运行代码:
    需要先运行consumer,因为我们是在消费者中创建队列的,如果先生产消息,由于没有可以路由到的队列,消息会被丢弃。
    $ python hello_world_consumer.pyb'good'b'hello world'
    $ python hello_world_producer.py "good"$ python hello_world_producer.py "hello world"$ python hello_world_producer.py "quit"
  • 相关阅读:
    cookie
    接上一篇
    es6
    本地文件r如何上传到github上
    npm的使用说明
    被公司996下的程序媛心路历程
    起点2020
    ES5(基本包装类型)字符串的方法
    ES5数组的方法
    css伪类
  • 原文地址:https://www.cnblogs.com/weiman3389/p/6223471.html
Copyright © 2011-2022 走看看