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

  • 相关阅读:
    workerPool _ golang
    jsp:JDBCmysql数据库连接
    jsp:session的跟踪方式
    js:使用nodejs为页面传递mysql中的数据
    js:网页中的高和宽(document)
    js:nodejs简单的Http服务器搭建
    js:面向对象编程
    js:nextSibling兄弟节点的使用
    java:mysql基础语法
    jsp:常用标签的核心标签的使用
  • 原文地址:https://www.cnblogs.com/juandx/p/5124432.html
Copyright © 2011-2022 走看看