RabbitMQ基础一

教程:http://www.01happy.com/python-pika-rabbitmq-summary/

用的ubuntu16.04和python3,对于一些问题重新改过一些地方。可实际运行。

RabbitMQReceive.py //参数在这个文件里传,也就是python3 RabbitMQReceive.py sad.*

import time
import pika
import sys

connection=pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel=connection.channel()
#channel.queue_declare(queue='queue',durable=True)//测试队列的
#channel.exchange_declare(exchange='rout',exchange_type='direct',durable=True)//测试路由键的
#channel.exchange_declare(exchange='exch',exchange_type='fanout',durable=True)//测试广播的
channel.exchange_declare(exchange='topi',exchange_type='topic',durable=True)//测试模糊路由的
print('[*]Waiting for messages.To exit press CTRL+C')

routings=sys.argv[1:]
if not routings:
	exit()

#channel.basic_publish(exchange='',routing_key='queue',body=)
result=channel.queue_declare(queue='',exclusive=True)
queueName=result.method.queue//生成随机队列
#channel.queue_bind(exchange='exch',queue=queueName,routing_key='')//测试广播的

for routing in routings:
	channel.queue_bind(exchange='topi',queue=queueName,routing_key=routing)//测试模糊路由的
	#channel.queue_bind(exchange='rout',queue=queueName,routing_key=routing)//测试路由键的

def callback(ch,method,properties,body):
	print("[x]Received %r"%(body,))
	#time.sleep(1)
	#print("[x]Done")
	#ch.basic_ack(delivery_tag=method.delivery_tag)

#channel.basic_qos(prefetch_count=1)//测试工作队列负载均衡的
#channel.basic_consume(queue='queue',callback)//测试工作队列的

channel.basic_consume(queueName,callback)
channel.start_consuming()

RabbitMQSend.py

import sys
import pika
connection=pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel=connection.channel()
#channel.queue_declare(queue='queue',durable=True)//测试工作队列的
#channel.exchange_declare(exchange='exch',exchange_type='fanout',durable=True)//测试广播的
#channel.exchange_declare(exchange='rout',exchange_type='direct',durable=True)
#routings=['info','warning','error']//测试路由键的
channel.exchange_declare(exchange='topi',exchange_type='topic',durable=True)//测试模糊路由的
routings=['happy.work','happy.life','sad.work','sad.life']

for routing in routings:
	message='%s message.'%routing
	#channel.basic_publish(exchange='rout',routing_key=routing,body=message)//测试路由键的
	channel.basic_publish(exchange='topi',routing_key=routing,body=message)//测试模糊路由的
	print(message)
#message=' '.join(sys.argv[1:])or "Hello World!"
#channel.basic_publish(exchange='exch',routing_key='',body=message,properties=pika.BasicProperties(delivery_mode=2,))//测试广播的,ps:delivery_mode=2是持久化队列的
#channel.basic_publish(exchange='',routing_key='queue',body=message,properties=pika.BasicProperties(delivery_mode=2,))//测试工作队列的
#print("[x]Sent %r"%(message,))
connection.close()

关于工作队列:

//终端1

//终端2:这个是后开的,同时开则都是两条

关于广播:

//终端1:这个是后开的,所以收到的少了两条

//终端2

关于模糊路由键:

//终端1和终端2,在同一次send中得到不同的主题信息。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值