Ответы пользователя по тегу RabbitMQ
  • Rabbitmq + nodejs. Почему сообщение не удаляется из почереди после получения?

    @RidgeA
    rabbitmq ждет подтверждения обработки сообщения.
    Надо либо подтвердить (ack) либо создавать consumer в указанием что не надо ждать подтверждения (noAck)
    Ответ написан
    Комментировать
  • Есть ли аналоги rabbitmq (каллбеки, удаление из очереди)?

    @RidgeA
    Плюс ко всему нет возможности удалить из очереди какие то пакеты которые стали неактуальны, приходится использовать обертку со своими идентификаторами, и если на главный сервер приходит пакет с устаревшим идентификатором - я его выбрасываю


    Это одно из ключевых в очереди - нельзя просто так взять и удалить сообщение. Все что попало в очередь в ней остается пока кто-то не прочитает (ну или очередь не удалиться или сервак не навернется :-) )

    Основные требования это наличие возможности без проблем получить результат работы, и при необходимости остановить\удалить из очереди обработку пакета


    Может тогда какая-то реализация rpc? Почему именно очереди?
    Ответ написан
  • Какие нужны очереди в RabbitMQ для этих задач?

    @RidgeA
    0. Одно и то же сообщение не может быть доставлено одновременно двум консьюмерам. Это могут быть сообщения с одинаковым содержимым, но для системы это будут разные сообщения.

    1. Да это логично. Отдельная очередь под отдельную задачу позволит изменять количество обработчиков в зависимости от загрузки по каждой задаче в отдельности.

    2. Вот тут не понял. Имеется ввиду routing_key ?

    3. Есть 3 встроенных типа обменника. Лучше выбрать тот, который больше подходит по задаче, но надо учитывать что у них разная пропускная способность (вот, нашел статью - https://habrahabr.ru/company/oleg-bunin/blog/310418/)
    Ответ написан
    5 комментариев
  • Как организовать динамическое добавление consumer-ов для rabbit-mq?

    @RidgeA
    Я бы сделал промежуточного консьюмера, который бы просто очередь выгребал и смотрел что по свободным ресурсам. Если есть возможность (есть свободный процесс или есть возможность поднять новую виртуалку и тем самым обеспечить свободный процесс) - ставил в другую очередь, где сообщение получит уже консьюмер, который выполняет реальную задачу. Для каждого процесса можно организовать отдельную очередь по topic exchange на каждый процесс на виртуалке.

    Если воркер-посредник видит, что свободных процессов нет и нет возможности поднять виртуалку - возввращать сообщение в очередь (можно через отложенную очередь).
    Ответ написан
    3 комментария