RabbitMQ消息通信,一个生产者和多个消费者
2017-11-05 17:06
369 查看
上一则文章讲解了RabbitMQ的安装和简单一对一消息通信实现方法,具体可参考上一篇文章:http://blog.csdn.net/u012631731/article/details/72887588
这则文章讲述一个生产者和多个消费者的消息通信。
直接上源码,在源码里面进行注释讲述吧
client.py
server.py
更多请查询RabbitMQ官网:http://www.rabbitmq.com/
这则文章讲述一个生产者和多个消费者的消息通信。
直接上源码,在源码里面进行注释讲述吧
client.py
#!/usr/bin/env python import pika import sys #建立一个连接,目标地址为本机(localhost) connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) #创建一个消息通道 channel = connection.channel() #创建一个消息队列,消息队列的名称为task_queue, #这里的第二个参数durable,是对消息队列的设置, #使得RabbitMQ在发生异常退出时发送的消息不会被丢失,该消息会被发送给其他消费者 channel.queue_declare(queue='task_queue', durable=True) message = ' '.join(sys.argv[1:]) or "Hello World!" #设置转换方式(默认),关联消息队列(routing_key),绑定消息体(body) #delivery_mode 是设置消息队列的消息持久化,=1是不持久化,=2是持久化 channel.basic_publish(exchange='', routing_key='task_queue', body=message, properties=pika.BasicProperties( delivery_mode = 2, # make message persistent )) print(" [x] Sent %r" % message) #发送完毕后关闭连接 connection.close()
server.py
#!/usr/bin/env python import pika import time #不解释 connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) #不解释 channel = connection.channel() #不解释 channel.queue_declare(queue='task_queue', durable=True) print(' [*] Waiting for messages. To exit press CTRL+C') #在取消息的这个回调函数里面加了一个sleep,这样可以模拟不同消费者之间切换任务 #并且配置了消息接受后的消息确认,在一对一通信时我们设置no_ack为true def callback(ch, method, properties, body): print(" [x] Received %r" % body) time.sleep(body.count(b'.')) print(" [x] Done") ch.basic_ack(delivery_tag = method.delivery_tag) #设置每一个消费者最大的消息处理数量,这里设置为两个 channel.basic_qos(prefetch_count=2) channel.basic_consume(callback, queue='task_queue') channel.start_consuming()最后使用python执行它们,执行多个python server.py 和一个python client.py
更多请查询RabbitMQ官网:http://www.rabbitmq.com/
相关文章推荐
- RabbitMQ消息通信,一个生产者和多个消费者,广播式消息通信
- RabbitMQ消息通信,生产者发送消息给指定的消费者的消息队列
- RabbitMQ-理解消息通信-消费者和生产者
- 消息队列_RabbitMQ-0002.深入MQ生产者/信道/交换机/队列/消费者?
- RabbitMQ消息队列生产者和消费者
- RabbitMQ 消息发送和消息获取 之 rabbitMQ消息生产者和消费者
- RabbitMQ消息队列之二:消费者和生产者 Demo
- RabbitMQ消息队列之二:消费者和生产者
- java线程间通信[实现不同线程之间的消息传递(通信),生产者和消费者模型]
- RabbitMQ入门之一 生产者、消费者、虚拟主机、信道、交换机、队列、绑定
- 一个简单的生产者/消费者例子
- 生产者/消费者模式(阻塞队列) 一个经典的并发模型
- WebAPi的可视化输出模式(RabbitMQ、消息补偿相关)所有webapi似乎都缺失的一个功能
- 多线程通信小例子——New生产者消费者
- 线程间通信-多生产者多消费者(Lock版本)
- Java线程(学习整理)--4---一个简单的生产者、消费者模型
- 用消息队列编写一个客户端服务器通信的程序
- 线程之间通信之消费者生产者问题
- 电商之梳理rabbitmq相关知识---通信--消息队列
- 29-多线程(线程间通信-多生产者多消费者问题-JDK1.5新特性-Condition).1 2 31-多线程(线程间通信-多生产者多消费者问题-JDK1.5解决办法-范例). 1 2