channel.queue_declare(queue='hello1',durable=True)
properties = pika.BasicProperties(delivery_mode = 2,)
#!/usr/bin/env python import pika # 經過實例建立socket connection = pika.BlockingConnection( pika.ConnectionParameters('localhost') ) # 聲明一個管道/在管道內發消息 channel = connection.channel() # 管道內,聲明一個隊列,queue=queue的名字 # durable=True持久話隊列 channel.queue_declare(queue='hello10',durable=True) # routing_key = queue的名字 # body = 消息內容 # properties = pika.BasicProperties 持久話參數,可在()加入定義參數 # delivery_mode =2 持久化消息 # 一個消息不能直接發送到隊列,它老是須要通過一個exchange。 channel.basic_publish(exchange='', routing_key='hello10', body='Hello World!', properties = pika.BasicProperties( delivery_mode = 2,) ) print(" [x] Sent 'Hello World!'") # 關閉隊列 connection.close()
#_*_coding:utf-8_*_ __author__ = 'Alex Li' import pika,time # 實例話建立socket connection = pika.BlockingConnection( pika.ConnectionParameters('localhost')) # 聲明一個管道/在管道內發消息 channel = connection.channel() # 爲何再次聲明queue名字:若是消費者先運行了,沒有聲明queue就會報錯 # 若是想要防止報錯發生,就要定義queue。 # # 管道內,聲明一個隊列,queue=queue的名字 # durable=True持久話隊列 channel.queue_declare(queue='hello10',durable=True) #回調函數 # ch 管道內存對象地址 # method 消息發給哪一個queue # body = 消息內容 def callback(ch, method, properties, body): print(" [x] Received %r" % body) #time.sleep(10) # 消息處理完後會向生產端發送確認指令 ch.basic_ack(delivery_tag=method.delivery_tag) # 消費消息 # callback 若是收到消息,就調用callback函數來處理消息 # queue 管道內的隊列名字 # no_ack = True 這條消息出沒處理完都不會給服務端發確認 channel.basic_consume( callback, queue='hello10',) print(' [*] Waiting for messages. To exit press CTRL+C') # 啓動後一直運行,沒有數據會等待.. channel.start_consuming()