zoukankan      html  css  js  c++  java
  • 实例1消费者

    #coding=utf-8
    import pika
    import time
    connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    channel = connection.channel()
    channel.queue_declare(queue='hellow',#这里为什么会重新声明一个队列,是因为不确定是客户端先启动还是服务端先启动,所以先确认队列存在
                          durable=True) #防止rabbitmq服务器挂掉数据丢失了,队列持久化,durable只保存了队列,不保存队里里面的数据
    def callback(ch,method,properties,body):  #回调函数
        print '收到消息:',body
        time.sleep(30)
        print '消息处理完毕:', body
    channel.basic_consume(callback,queue='hellow',
                          #no_ack=True  需要客户端确认,如果正在处理消息的时候客户端挂掉就会转到下一个客户端,会等待消息完整的处理完
                          )#如果收到消息就调用callback来处理消息
    print '等待接收消息。。。。。'
    channel.start_consuming()   #循环持续运行下去
    
    #消息持久化
    

     已经定义的队列,再次定义是无效的,这就是幂次原理。RabbitMQ不允许重新定义一个已有的队列信息,也就是说不允许修改已经存在的队列的参数。如果非要这样做,只会返回异常。

  • 相关阅读:
    【转载】Dom篇
    【转载】Eclipse自动编译问题
    RabbitMQ
    分布式消息中间件
    分布式限流算法
    分布式限流和熔断
    数据库中间件
    redis 集群原理
    redis 哨兵模式(读写分离)
    redis 和memcache 区别
  • 原文地址:https://www.cnblogs.com/qiangayz/p/8648153.html
Copyright © 2011-2022 走看看