Tôi cần phải có một khách hàng python có thể phát hiện hàng đợi trên một máy chủ RabbitMQ khởi động lại trao đổi, và sau đó bắt đầu lên một khách hàng để tiếp tục tiêu thụ tin nhắn từ mỗi hàng đợi. Làm thế nào tôi có thể khám phá hàng đợi từ một số thư viện/thư viện python tương thích RabbitMQ?Làm cách nào để tôi có thể liệt kê hoặc khám phá các hàng đợi trên trao đổi RabbitMQ bằng cách sử dụng python?
Trả lời
Theo như tôi biết, không có cách nào để thực hiện việc này. Đó là không có gì để làm với Python, nhưng vì AMQP không xác định bất kỳ phương pháp phát hiện hàng đợi nào.
Trong mọi trường hợp, trong AMQP, khách hàng (người tiêu dùng) khai báo hàng đợi: nhà xuất bản xuất bản thư tới trao đổi với khóa định tuyến và người tiêu dùng xác định hàng đợi nào đang định tuyến. Vì vậy, nó không có ý nghĩa để nói về hàng đợi trong sự vắng mặt của người tiêu dùng.
Tính năng quản lý đến hạn trong phiên bản AMQP trong tương lai. Vì vậy, bây giờ bạn sẽ phải chờ đợi cho đến khi một phiên bản mới sẽ đi kèm với chức năng đó.
Kể từ khi tôi là một người mới bắt đầu RabbitMQ, thực hiện việc này với một hạt muối, nhưng có một thú vị Management Plugin, mà cho thấy một giao diện HTTP để "Từ đây bạn có thể quản lý sàn giao dịch, hàng đợi, bindings, máy ảo, người dùng và Hy vọng giao diện người dùng khá tự giải thích. "
http://www.rabbitmq.com/blog/2010/09/07/management-plugin-preview-release/
Có vẻ như không phải là một AMQP chiều trực tiếp để quản lý máy chủ nhưng có một cách bạn có thể làm điều đó từ Python. Tôi khuyên bạn nên sử dụng mô-đun subprocess được kết hợp với lệnh rabbitmqctl
để kiểm tra trạng thái của hàng đợi.
Tôi giả định rằng bạn đang chạy ứng dụng này trên Linux. Từ một dòng lệnh, chạy:
rabbitmqctl list_queues
sẽ cho kết quả:
Listing queues ...
pings 0
receptions 0
shoveled 0
test1 55199
...done.
(tốt, nó đã làm trong trường hợp của tôi do hàng đợi cụ thể của tôi)
Trong code của bạn, sử dụng mã này để có được sản lượng rabbitmqctl
:
import subprocess
proc = subprocess.Popen("/usr/sbin/rabbitmqctl list_queues", shell=True, stdout=subprocess.PIPE)
stdout_value = proc.communicate()[0]
print stdout_value
Sau đó, chỉ cần đưa ra mã của riêng bạn để phân tích 0.123.để sử dụng cho riêng bạn.
Tôi sử dụng https://github.com/bkjones/pyrabbit. Nó nói chuyện trực tiếp với giao diện API của plugin MMMt của RabbitMQ, và rất tiện lợi cho việc thẩm vấn RabbitMQ.
pyrabbit không hoạt động tốt cho tôi; Tuy nhiên, Plugin Quản lý chính nó có kịch bản dòng lệnh riêng của mình mà bạn có thể tải về từ GUI quản trị của riêng bạn và sử dụng sau này (ví dụ, tôi đã tải về của tôi từ
http://localhost:15672/cli/
sử dụng tại chỗ)
Bạn có thể thêm rabbitmq_management Plugin
sudo /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
sudo service rabbitmq-server restart
Sau đó sử dụng phần còn lại-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
tôi đang sử dụng thư viện requests trong ví dụ này, nhưng nó không đáng kể.
Ngoài ra tôi tìm thấy thư viện mà làm điều đó cho chúng ta - pyrabbit
from pyrabbit.api import Client
cl = Client('localhost:15672', 'guest', 'guest')
queues = [q['name'] for q in cl.get_queues()]
- 1. Làm cách nào để liệt kê() trên danh sách các bộ dữ liệu bằng Python?
- 2. Đang cố gắng khám phá các thiết bị iOS trên mạng của tôi bằng cách sử dụng tập lệnh python
- 3. Tôi có thể liệt kê các màu trong WPF bằng XAML bằng cách nào?
- 4. Có cách nào để liệt kê hàng đợi trong thỏmq qua pika không?
- 5. Khám phá các máy chủ DHCP bằng cách sử dụng multicast (224.0.0.12) trong GNU/Linux/C
- 6. RabbitMQ Trao đổi chủ đề: 1 Trao đổi so với nhiều trao đổi
- 7. Làm cách nào để liệt kê/liệt kê tất cả các ứng dụng đã cài đặt trong Windows XP?
- 8. Làm cách nào tôi có thể sử dụng duy nhất (a, 'hàng') từ MATLAB bằng Python?
- 9. Làm cách nào để liệt kê tất cả các đăng ký của tôi bằng ClearCase?
- 10. RabbitMQ tạm ngừng tiêu thụ hàng đợi
- 11. liệt kê Outlook Mailbox bằng cách sử dụng Visual Studio
- 12. Tôi làm cách nào để liệt kê người đăng ký đang hoạt động bằng cách sử dụng Faye?
- 13. Python unittest và khám phá
- 14. Làm thế nào tôi có thể thay đổi ổ đĩa bằng cách sử dụng python os?
- 15. Trao đổi chủ đề và trao đổi trực tiếp trong RabbitMQ
- 16. Liệt kê người dùng trong kênh IRC bằng cách sử dụng khung IRC Xoắn Python
- 17. Tôi có thể liệt kê tất cả các bảng trong cơ sở dữ liệu bằng Squirrel SQL bằng cách nào?
- 18. Làm cách nào để tôi có thể tính toán% thay đổi giá hàng ngày bằng cách sử dụng MySQL?
- 19. Làm cách nào để sắp xếp các thử nghiệm khám phá không ngờ nhất?
- 20. Làm cách nào để liệt kê các phương thức trong mô-đun Python 2.5?
- 21. Làm cách nào để tôi chỉ liệt kê các thư mục trong kho lưu trữ zip bằng Python?
- 22. Làm cách nào để tạo danh sách “Mở bằng” như trong Khám phá trong ứng dụng của riêng tôi
- 23. RabbitMQ và trao đổi chủ đề xoay vòng
- 24. Làm cách nào để kiểm tra khách hàng FIX của tôi? Có một FIX trao đổi giả ra khỏi đó mà tôi có thể sử dụng?
- 25. Làm cách nào tôi có thể liệt kê các thành viên không có giấy tờ với nhân sư/tự động?
- 26. Làm cách nào để trao đổi các đoạn trong chuỗi?
- 27. khám phá và dịch ngược python bytecode
- 28. Cách liệt kê các tab trong vim?
- 29. Khám phá thiết bị di động bằng cách sử dụng wifi
- 30. Làm cách nào để khám phá cấu trúc của cơ sở dữ liệu PostgreSQL?
Đối với tôi, điều này chạy một kịch bản wrapper mà từ chối để tiếp tục nếu tôi không phải là root. Tôi có thể chạy tệp nhị phân cơ bản (/ usr/lib/rabbitmq/bin/rabbitmqctl) trực tiếp, tuy nhiên, nếu tôi đảm bảo rằng tệp ~/.erlang.cookie khớp với RabbitMQ. –
Chạy kết quả 'rabbitmqctl list_queues' trong' Lỗi: không thể nhận ra lệnh' – Cerin