rsc*_*amm 35 python amqp rabbitmq
我需要一个python客户端,可以在重新启动的RabbitMQ服务器交换机上发现队列,然后启动客户端以恢复消耗来自每个队列的消息.如何从兼容RabbitMQ的python api /库中发现队列?
Iva*_*anD 44
似乎没有直接的AMQP方式来管理服务器,但有一种方法可以通过Python来实现.我建议使用与该命令结合的子进程模块rabbitmqctl来检查队列的状态.
我假设你在Linux上运行它.从命令行运行:
rabbitmqctl list_queues
Run Code Online (Sandbox Code Playgroud)
将导致:
Listing queues ...
pings 0
receptions 0
shoveled 0
test1 55199
...done.
Run Code Online (Sandbox Code Playgroud)
(好吧,由于我的特定队列,它确实在我的情况下)
在您的代码中,使用此代码获取输出rabbitmqctl:
import subprocess
proc = subprocess.Popen("/usr/sbin/rabbitmqctl list_queues", shell=True, stdout=subprocess.PIPE)
stdout_value = proc.communicate()[0]
print stdout_value
Run Code Online (Sandbox Code Playgroud)
然后,只需提出自己的代码来解析stdout_value自己的使用.
Dan*_*man 24
据我所知,没有办法做到这一点.这与Python无关,但是因为AMQP没有定义任何队列发现方法.
在任何情况下,在AMQP中,它是声明队列的客户端(消费者):发布者使用路由密钥将消息发布到交换机,并且消费者确定这些路由密钥到达哪些队列.因此,在没有消费者的情况下谈论队列是没有意义的.
Ser*_*nov 18
您可以添加插件rabbitmq_management
sudo /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
sudo service rabbitmq-server restart
Run Code Online (Sandbox Code Playgroud)
然后使用rest-api
import requests
def rest_queue_list(user='guest', password='guest', host='localhost', port=15672, virtual_host=None):
url = 'http://%s:%s/api/queues/%s' % (host, port, virtual_host or '')
response = requests.get(url, auth=(user, password))
queues = [q['name'] for q in response.json()]
return queues
Run Code Online (Sandbox Code Playgroud)
我在这个例子中使用了请求库,但并不重要.
我也找到了为我们做的图书馆 - pyrabbit
from pyrabbit.api import Client
cl = Client('localhost:15672', 'guest', 'guest')
queues = [q['name'] for q in cl.get_queues()]
Run Code Online (Sandbox Code Playgroud)
由于我是 RabbitMQ 初学者,因此对此持保留态度,但有一个有趣的管理插件,它公开了一个 HTTP 接口,“从这里您可以管理交换、队列、绑定、虚拟主机、用户和权限。希望 UI这是相当不言自明的。”
http://www.rabbitmq.com/blog/2010/09/07/management-plugin-preview-release/
| 归档时间: |
|
| 查看次数: |
53821 次 |
| 最近记录: |