Answer the question
In order to leave comments, you need to log in
A queue broker (with a PHP client) with these capabilities?
Good afternoon,
you need a queue server with the following features:
- Running inside a Docker container
- A client for PHP is required (or at least a simple protocol - I implement it myself)
- Small RAM consumption. RabbitMQ now fits into 128 MB without any problems.
- Support for job completion confirmation (like Ack in RabbitMQ)
- Automatic message resending when the connection with the client
is lost - Message uniqueness or the ability to read messages from the queue for manual uniqueness checking
- QoS support to limit the number of simultaneously taken jobs for one client
- Limitation of the number of running tasks at the same time by a unique parameter (for the limit of simultaneous execution of tasks per user)
What is not important:
- Speed. Enough even 1 message per second.
- Disk storage and queue recovery on failure.
- Message length. Enough even messages of type int in case of emergency.
What I tried:
- Redis - implemented everything manually. Unreliable
- Gearman - no QoS or similar limits
- RabbitMQ - no last point. You have to implement this moment manually, which is terribly inconvenient.
Currently using RabbitMQ+Management in conjunction with Bunny for asynchrony.
In principle, even a PHP library that does all this through a MySQL database or the same Redis is suitable. But I would not like to implement all this manually, because this is a very thankless and time-consuming task.
Addition about the "restriction on the parameter":
There is a set of users who create long-running (from a couple of minutes to several days) tasks. Users can have different tariffs that allow simultaneous execution of 1/2/3 tasks. But at the same time, any user can create an unlimited number of them: "extra" tasks wait until their user's queue is free. The user's tariff can change at any time (convenient for them) and all this should work without restarting the broker.
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question