0
我希望我的python腳本能夠在將任務發送至隊列之前不斷運行並檢查隊列大小是否爲零。下面是一個片段:RabbitMQ - 如何獲取隊列大小
#!/usr/bin/env python
import pika
import sys
while True:
# establish connection with RabbitMQ server
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# create queue
# durable=True make sure RabbitMQ never lose our queue
rabbit_queue = channel.queue_declare(queue="task_queue", durable=True)
queue_size = rabbit_queue.method.message_count
if queue_size <= 0:
message = get_message()
channel.basic_publish(exchange='',
routing_key="task_queue",
body=message,
properties=pika.BasicProperties(
delivery_mode=2, # make message persistent
))
print " [x] Sent %r" % (message,)
time.sleep(3)
# close connection to flush network buffers AND ensure our message was actually delivered to RabbitMQ
connection.close()
不斷重新建立連接是否是一種好的做法?
實在是太寬泛。最正確的答案:這取決於此腳本運行的頻率,您的基礎架構,典型的AMQP代理負載。 – pinepain 2015-02-08 16:06:28
此腳本作爲後臺腳本運行。它nv停止(即:while循環)。我創造了大約6個隊列。每個隊列可能有大約1500個任務 – nuttynibbles 2015-02-08 16:32:40
試試吧。如果你遇到性能問題,那麼你一定會知道該怎麼做。 – pinepain 2015-02-08 18:05:17