首页 > 代码库 > rabbitMQ实战(一)---------使用pika库实现hello world
rabbitMQ实战(一)---------使用pika库实现hello world
rabbitMQ实战(一)---------使用pika库实现hello world
2016-05-18 23:29
import pika,sys #connect to the rabbitmq,use the default vhost credentials = pika.PlainCredentials("guest","guest") conn_params = pika.ConnectionParameters("localhost", credentials=credentials) conn_broker = pika.BlockingConnection(conn_params) #get a channel used to communicate with the rabbitmq channel = conn_broker.channel() #declare a exchange channel.exchange_declare(exchange=‘hello-exchange‘, type=‘direct‘, passive=False, #if the exchange already existes,report a error.It means we want to declare an exchange. durable=True, #durable the message auto_delete=False) #if the last consumer is over,do not delete the exchange auto #create a message msg = sys.argv[1] msg_props = pika.BasicProperties() msg_props.content_type = "text/plain" #publish the message channel.basic_publish(body=msg, exchange=‘hello-exchange‘, properties=msg_props, routing_key=‘hola‘)
消费者代码
hello_world_consumer.py:
import pika #connect to the rabbitmq,use the default vhost credentials = pika.PlainCredentials("guest","guest") conn_params = pika.ConnectionParameters("localhost", credentials=credentials) conn_broker = pika.BlockingConnection(conn_params) #get a channel used to communicate with the rabbitmq channel = conn_broker.channel() #declare a exchange channel.exchange_declare(exchange=‘hello-exchange‘, type=‘direct‘, passive=False, #if the exchange already existes,report a error.It means we want to declare an exchange. durable=True, #durable the message auto_delete=False) #if the last consumer is over,do not delete the exchange auto #declare a queue channel.queue_declare(queue="hello-queue") #bind queue to an exchange channel.queue_bind(queue=‘hello-queue‘, exchange=‘hello-exchange‘, routing_key=‘hola‘) #define the consumer method to consumer message from a queue def msg_consumer(channel,method,header,body): channel.basic_ack(delivery_tag=method.delivery_tag) if body.decode("ascii") == "quit": channel.basic_cancel(consumer_tag=‘hello-consumer‘) channel.stop_consuming() else: print(body) return #subscribe message channel.basic_consume(msg_consumer, queue=‘hello-queue‘, consumer_tag=‘hello-consumer‘) #begin loop until a quit message is sent channel.start_consuming()
运行代码:
需要先运行consumer,因为我们是在消费者中创建队列的,如果先生产消息,由于没有可以路由到的队列,消息会被丢弃。
$ python hello_world_consumer.pyb‘good‘b‘hello world‘
$ python hello_world_producer.py "good"$ python hello_world_producer.py "hello world"$ python hello_world_producer.py "quit"
rabbitMQ实战(一)---------使用pika库实现hello world
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。