У меня есть API, где клиенты отправляют задания асинхронно, которые можно легко разделить на множество небольших задач. Иногда мы получаем больше заданий, чем можем обрабатывать в реальном времени, и поэтому я хочу иметь очередь заданий для каждого клиента, чтобы я мог циклически обрабатывать задания между клиентами. Это так, что если один клиент отправляет гигантскую работу, крошечные задания от других клиентов не должны ждать гигантской задачи.
Для моего конкретного случая важно, чтобы каждая задача выполнялась ровно один раз.
Я смотрел на RabbitMQ, но я не нашел способа для потребителя (в данном случае процессора) подписаться на все очереди, соответствующие шаблону, как очереди могут подписаться на обмен.
Кажется, у Кафки есть клиентское разбиение, которое я хочу, но, похоже, не дает достаточной уверенности, что задачи будут выполнены один раз. Возможность для разных потребителей иметь различные смещения еще больше усиливается.
Существует ли посредник очереди сообщений, который можно настроить для выполнения описанного мной?