Python操作rabbitMQ的示例代码

  

  

RabbitMQ是一个由Erlang语言开发的AMQP的开源实现。

  

rabbitMQ是一款基于AMQP协议的消息中间件,它能够在应用之间提供可靠的消息传输。在易用性,扩展性,高可用性上表现优秀。使用消息中间件利于应用之间的解耦,生产者(客户端)无需知道消费者(服务端)的存在。而且两端可以使用不同的语言编写,大大提供了灵活性。

  

 Python操作rabbitMQ的示例代码

  

中文文档

  

        #安装配置epel源   rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel -释放- 6 - 8. - noarch.rpm      #安装erlang   百胜是安装erlang      #安装RabbitMQ   百胜是安装rabbitmq服务器      #启动/停止   服务rabbitmq服务器启动/停止      

  

<强>简单模式

  

生产者         导入鼠兔   连接=pika.BlockingConnection(鼠兔。ConnectionParameters(主机=' localhost '))      频道=connection.channel ()      channel.queue_declare(队列='你好')      channel.basic_publish(交换=",   routing_key='你好',   身体=癏ello World !”)      打印(“[x]发送“Hello World !”)   connection.close ()      

消费者         连接=pika.BlockingConnection (pika.ConnectionParameters(主机=' localhost '))   频道=connection.channel ()      channel.queue_declare(队列='你好')      def回调(ch、方法、属性、身体):   打印(“[x]收到% r " %的身体)      通道。basic_consume(回调,   队列='你好',   no_ack=True)      打印(“[*]等待消息。退出按CTRL + C”)   channel.start_consuming ()   之前      

<强>相关参数

  

1, no-ack=False

  

如果消费者遇到情况(关闭通道,连接关闭,或TCP连接丢失)挂掉了,那么,RabbitMQ会重新将该任务添加到队列中。

  
      <李>回调函数中的ch.basic_ack (delivery_tag=method.delivery_tag)   <李> basic_comsume中的no_ack=False李   
  

接收消息端应该这么写:

           导入鼠兔      连接=pika.BlockingConnection (pika.ConnectionParameters (   主机=' 10.211.55.4 '))   频道=connection.channel ()      channel.queue_declare(队列='你好')      def回调(ch、方法、属性、身体):   打印(“[x]收到% r " %的身体)   导入的时间   time . sleep (10)   打印“ok”   ch.basic_ack (delivery_tag=method.delivery_tag)      channel.basic_consume(回调,   队列='你好',   no_ack=False)      打印(“[*]等待消息。退出按CTRL + C”)   channel.start_consuming ()   之前      

2,耐用:消息不丢失

  

生产者         导入鼠兔      连接=pika.BlockingConnection (pika.ConnectionParameters(主机=' 10.211.55.4 '))   频道=connection.channel ()      #让消息持久   通道。queue_declare(队列=愫谩?持久=True)      channel.basic_publish(交换=",   routing_key='你好',   身体=癏ello World !”   属性=pika.BasicProperties (   delivery_mode=2, #消息持久   ))   打印(“[x]发送“Hello World !”)   connection.close ()      

<强> 3,消息获取顺序

  

默认消息队列里的数据是按照顺序被消费者拿走,例如:消费者1去队列中获取奇数序列的任务,消费者1去队列中获取偶数序列的任务。

  

channel.basic_qos (prefetch_count=1)表示谁来谁取,不再按照奇偶数排列

        导入鼠兔      连接=pika.BlockingConnection (pika.ConnectionParameters(主机=' 10.211.55.4 '))   频道=connection.channel ()      #让消息持久   channel.queue_declare(队列='你好')         def回调(ch、方法、属性、身体):   打印(“[x]收到% r " %的身体)   导入的时间   time . sleep (10)   打印“ok”   ch.basic_ack (delivery_tag=method.delivery_tag)      channel.basic_qos (prefetch_count=1)      channel.basic_consume(回调,   队列='你好',   no_ack=False)      打印(“[*]等待消息。退出按CTRL + C”)   channel.start_consuming ()      

Python操作rabbitMQ的示例代码