• 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

  • 相关阅读:
    CORS跨域漏洞学习
    CVE-2020-0796漏洞复现(RCE)
    Wfuzz使用学习
    DNSlog注入学习
    一些CTF练习记录
    数据结构与算法(十三):赫夫曼树
    数据结构与算法(十二):堆排序
    博客园自定义代码块样式
    Nginx入门(二):常用功能配置
    数据结构与算法(十一):二叉树
  • 原文地址:https://www.cnblogs.com/juandx/p/5124432.html
Copyright © 2020-2023  润新知