Я оцениваю использование RabbitMQ в качестве посредника / структуры очереди сообщений для замены встроенной очереди сообщений (используя C #, если это имеет значение).
У меня будет служба с N потоками, каждый из которых является потребителем определенной очереди. Может быть несколько потоков, которые совместно используют одну и ту же очередь. Я полагаю, что я бы использовал свойство prefetch, равное 1, для каждого потребителя, чтобы потребительский поток получал 1 сообщение за раз.
Давайте рассмотрим пример, в котором у меня есть 4 пользовательских потока, и все они просматривают очередь с именем «отчеты». Эти отчеты могут быть запущены для разных «клиентов». Я хочу не допустить, чтобы клиент монополизировал очередь, поэтому предположим, что я не хочу, чтобы какой-либо один клиент использовал более двух потребителей в любой момент времени (если есть другие ожидающие сообщения в очереди). Если нет других сообщений в очереди, ожидающих других клиентов, то я бы хотел, чтобы все потребители имели право.
Учитывая мое ограниченное понимание RabbitMQ, я считаю, что я мог бы либо использовать шаблон темы, чтобы указать клиента, либо использовать собственный заголовок.
Я хотел бы знать, существует ли шаблон проектирования, поддерживающий определение предела для уникального заголовка / значения клиента.
Я не прошу никого писать код для меня, я просто хочу знать, может ли кто-нибудь сказать мне «нет, это не сработает» заранее, прежде чем я потрачу кучу времени на ускорение.
Если мой вопрос не имеет смысла, пожалуйста, дайте мне знать, и я обновлю его дополнительной информацией. Заранее спасибо.