生产者:
import pika
creat = pika.PlainCredentials('**','**') #连接rabbitmq
conn = pika.BlockingConnection(pika.ConnectionParameters('10.0.2.111',5672,'/',creat)) #连接rabbitmq
channel = conn.channel() #建立通道
channel.queue_declare('task_a')#建立队列
channel.exchange_declare(exchange='task_b',exchange_type='fanout') #fanout广播
i = 'woshi'
channel.basic_publish(exchange='task_b',routing_key='task_a',body=i)
conn.close()
消费者
import pika
create = pika.PlainCredentials('**','**') #连接rabbitmq
conn = pika.BlockingConnection(pika.ConnectionParameters('10.0.2.111',5672,'/',create))#连接rabbitmq
channel = conn.channel()#建立通道
# channel.queue_declare('task_a')#建立队列 #drue = True 持久化
channel.exchange_declare(exchange='task_b',exchange_type='fanout')
result = channel.queue_declare(exclusive=True) #不给队列起名字,在消费者断开后,删除队列
queue_name = result.method.queue
channel.queue_bind(exchange='task_b',queue=queue_name)
def callback(ch,method,propertities,body):
print(body)
ch.basic_ack(delivery_tag=method.delivery_tag)
# 给队列发一个确认执行完的信息,否则消息会保存起来,不会被消费掉,会转给下个消费者
# channel.basic_qos(prefetch_count=1) #根据cpu处理速度调整发消息的速度
# channel.basic_consume(callback,queue='task_a',no_ack=False) # no_ack=True #取消发送消息中断处理功能,不管有没有处理完,都不会给服务器端发确认
channel.basic_consume(callback,queue=queue_name,no_ack=False)
channel.start_consuming()