完整代碼如下:
生產者,producer
1 2 3 import pika 4 connection = pika.BlockingConnection( 5 pika.ConnectionParameters('localhost'))#建立一個最基本的socket 6 chanel = connection.channel()#聲明一個管道 7 8 chanel.queue_declare(queue='name')#給管道創建一個隊列,參數是管道隊列名。 9 10 chanel.basic_publish(exchange='', 11 routing_key='name', 12 body ='HELLO WORD!')#要發送的消息。 13 print( '發出一個消息') 14 connection.close()#關閉
消費者:
1 import pika,time 2 3 consumer = pika.BlockingConnection\ 4 (pika.ConnectionParameters('localhost'))#創建socket連接 5 channel = consumer.channel()#創建管道 6 channel.queue_declare(queue='name') 7 8 def backcall(ch,method,properties,body):#參數body是發送過來的消息。 9 print(ch,method,properties) 10 time.sleep(15) 11 print('[x] Received %r'%body) 12 13 channel.basic_consume(backcall,#回調函數。執行結束后立即執行另外一個函數返回給發送端是否執行完畢。 14 queue='name', 15 no_ack=True#不會告知服務端我是否收到消息。一般注釋。 16 )#如果注釋掉,對方沒有收到消息的話不會將消息丟失,始終在隊列里等待下次發送。 17 18 print('waiting for message To exit press CTRL+C') 19 channel.start_consuming()#啟動后進入死循環。一直等待消息。