Akuma
@Akuma
Веб-программист

Брокер очередей (с клиентом под PHP) с указанными возможностями?

Добрый день,

необходим сервер очередей со следующими возможностями:
- Запуск внутри Docker контейнера
- Обязателен клиент для PHP (или хотя бы простой протокол - реализую сам)
- Небольшое потребление RAM. RabbitMQ укладывается сейчас в 128 Мб без проблем.
- Поддержка подтверждения выполнения задания (как Ack в RabbitMQ)
- Автоматическая переотправка сообщения при обрыве соединения с клиентом
- Уникализация сообщений или возможность читать сообщения из очереди для ручной проверки уникальности
- Поддержка QoS для ограничения числа одновременно взятых заданий для одного клиента
- Ограничение одновременного числа выполняемых заданий по уникальному параметру (для лимита одновременного выполнения заданий на одного пользователя)

Что не важно:
- Скорость. Хватит даже 1 сообщения в секунду.
- Хранение на диске и восстановление очереди при сбое.
- Длина сообщения. Хватит даже сообщений типа int на крайний случай.

Что пробовал:
- Redis - реализовывал все вручную. Ненадежно
- Gearman - нет никакого QoS или подобных лимитов
- RabbitMQ - нет последнего пункта. Приходится реализовывать этот момент вручную, что жутко неудобно.

На данный момент используется RabbitMQ+Management в связке с Bunny для асинхронности.

Впринципе подойдет даже библиотека на PHP, которая делает все это через MySQL базу или тот же Redis. Но хотелось бы не реализовывать все это вручную, ибо это очень неблагодарное и времязатратное занятие.

Дополнение по поводу "ограничения по параметру":
Имеется набор пользователей, которые создают долгоиграющие (от пары минут до нескольких дней) задачи. У пользователей могут быть разные тарифы, которые позволяют одновременное выполнение 1/2/3 задач. Но при этом любой пользователь может создать их неограниченное количество: "лишние" задачи ждут пока освободится очередь их пользователя. Тариф пользователя может меняться в любое (удобное им) время и все это должно раобтать без перезагрузку брокера.
  • Вопрос задан
  • 1390 просмотров
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
zeromq посмотрите

но, честно говоря, "ограничение по параметру" плохо укладывается в суть очередей, так что вряд ли
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы