Расчет среднего времени приема-передачи (AMQP / RabbitMQ)

Учитывая кластер узлов RabbitMQ с кучей очередей, получающих сообщения от обмена темами, я хотел бы иметь возможность программно ответить на вопрос:

Для очереди X какова текущая приблизительная оценка времени доставки сообщения / приема-передачи?

Используя API плагина управления RabbitMQ для самоанализа, я могу придумать целый ряд способов сделать это, ни один из которых не было бы ужасно сложно реализовать ([number of queued messages + 1] * average processing time), но все это похоже на изобретение колеса. Существуют ли какие-либо устоявшиеся передовые практики? Может быть, даже какие-то нестандартные механизмы, предоставляемые RabbitMQ?

(Для протокола, мы говорим о RabbitMQ 2.4.1 от Ruby, используя старый добрый кролик 0.6.0 с некоторым пользовательским кодом абстракции наверху.)


person hmans    schedule 10.05.2011    source источник


Ответы (1)


Я реализовал PoC, чтобы делать что-то вроде того, что вы просите, используя клиент RabbitMQ Erlang. Вы можете увидеть демонстрацию этого здесь: http://vimeo.com/20966661

Используемый шаблон называется Smart Proxy, как описано в книге Enterprise Integration Patterns.

Затем, чтобы увидеть пример кода, взгляните на эту библиотеку: https://github.com/videlalvaro/rmq_patterns

Найдите файл amqp_smart_proxy.erl

person old_sound    schedule 10.05.2011
comment
Мм ... теперь, когда я снова прочитал ... то, что я вам показал, будет работать в основном для установки типа RPC ... тем не менее, вы можете извлечь из этого идеи. - person old_sound; 10.05.2011