在我们的项目开发过程中,我们有时会有时候有两个或者多个程序交互的情况,当然就会使用到这里的消息队列来实现。现在比较火的就是RabbitMQ,还有一些ZeroMQ ,ActiveMQ 等等,著名的openstack默认用的RabbitMQ来实现的。
python中我们使用pika模块来操作消息队列,当然Celery也是python中比较火的做分布式消息队列的模块。
1,RabbitMQ的安装
参考链接https://www.cnblogs.com/zzqit/p/10158923.html
2,RAbbitMQ常用命令
rabbitmqctl list_queues # 查看所有队列信息 rabbitmqctl list_exchanges # 查看所有交换器 rabbitmqctl list_bindings # 查看所有 rabbitmqctl reset # 清除所有队列 rabbitmqctl status # 查看运行信息 rabbitmqctl start_app # 启动应用 rabbitmqctl stop_app # 关闭应用
3,常用方法
exchange_delete # 删除交换机 queue_delete # 删除队列 queue_purge # 清除指定队列的所有的消息 queue_unbind # 队列和交换机解除绑定 basic.cancel # 清除消费者
4,最简单的发收事例
发送端(producer)
1 import pika 2 3 # 建立一个实例 4 connection = pika.BlockingConnection( 5 pika.ConnectionParameters('localhost') # 默认端口5672,可不写 6 ) 7 8 # 声明一个管道,在管道里发消息 9 channel = connection.channel() 10 11 # 在管道里声明queue名字为test 12 channel.queue_declare(queue='test') 13 14 # 指明发送队列的名字跟内容 15 channel.basic_publish(exchange='', 16 routing_key='test', # queue名字 17 body='Hello World!' # 消息内容 18 ) 19 20 print(" [x] Sent 'Hello World!'") 21 22 connection.close() # 队列关闭