zoukankan      html  css  js  c++  java
  • rabbitmq学习

    rabbitmq学习

    rabbitmq是一个好东西,今天按照官网的信息来学习一下。

    有两个脚本,一个用来发送信息到queue,一个用来收集信息。

    下面这个脚本可以发送一个'Hello World!'到queue中

    #!/usr/bin/env python
    import pika
    
    connection = pika.BlockingConnection(pika.ConnectionParameters(
            host='localhost'))
    channel = connection.channel()
    
    channel.queue_declare(queue='hello')
    
    channel.basic_publish(exchange='',
                          routing_key='hello',
                          body='Hello World!')
    print(" [x] Sent 'Hello World!'")
    connection.close()
    

      

    通过在命令行 rabbitmqctl list_queues | grep hello 可以看到:

    hello 1

    说明hello这个queue有了一个信息

    接着执行收信息的脚本

    #!/usr/bin/env python
    import pika
    
    connection = pika.BlockingConnection(pika.ConnectionParameters(
            host='localhost'))
    channel = connection.channel()
    
    channel.queue_declare(queue='hello')
    
    def callback(ch, method, properties, body):
        print(" [x] Received %r" % body)
    
    channel.basic_consume(callback,
                          queue='hello',
                          no_ack=True)
    
    print(' [*] Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()
    

    可以看到输出把之前我们发送的信息接收了,并且打印出来,这时候hello这个queue应该是空的,

    用 rabbitmqctl list_queues | grep hello可以看到

    hello 0

    说明这个queue已经空了,消息已经被接收出去了

    其中有一个no_ack=True的参数,如果为True就表示把queue中的信息读取并且清空queue,如果设置为False,就表示只读取queue的数据,但是不清空队列中的信息。比如设置为了False,收取信息后用命令行 rabbitmqctl list_queues | grep hello查看仍然是hello 1,说明信息仍然在队列中。

    当然在连接rabbitmq的时候,也可以远程,把localhost改为ip即可。

    参考资料

    https://www.rabbitmq.com/tutorials/tutorial-one-python.html

  • 相关阅读:
    在IE地址栏输入JS的有趣效果
    min-height for IE6
    针对主流浏览器的CSS-HACK写法及IE常用条件注释
    spring mvc从前台往后台传递参数的三种方式
    SQL语句优化
    SpringCloud分布式开发理解
    Spring的三大核心思想
    单例模式中的懒汉模式及饿汉模式
    SpringMVC工作原理
    堆和栈的区别及堆区和栈区的区别
  • 原文地址:https://www.cnblogs.com/juandx/p/5124432.html
Copyright © 2011-2022 走看看