Я бы хотел реализовать конкурирующих потребителей с помощью RabbitMQ, у меня есть 2 (или более) потребителя:
Потребитель 1 может потреблять сообщения типа "красный" и типа "синий"
Потребитель 2может принимать сообщения типа «красный» и типа «черный»
Теперь я хотел бы иметь балансировку нагрузки между потребителями (и, возможно, большим количеством экземпляров потребителей с одинаковыми конфигурациями), используя шаблон конкурирующих потребителей иЯ бы хотел, чтобы порядок сообщений не изменялся "свободно" (мне не нужен идеальный порядок, но я хотел бы, чтобы сообщение от 2 часов назад было обработано раньше, чем от 2 минут назад).
Пример: Iхотели бы обработать следующие сообщения следующим образом:
- Синий: потребитель 1
- Черный: потребитель 2
- Красный: потребитель, который первым завершил обработку(предположим, Потребитель 1)
- 10 миллионов красных сообщений: оба потребителя будут конкурировать за сообщения и обрабатывать их
- 1 миллион синих сообщений: только после всех 10 миллионов rПосле того, как потребитель 1 завершит работу с синими сообщениями, он должен начать обрабатывать новые красные сообщения, так как черные сообщения для потребителя отсутствуют, когда потребитель готов к обработке синих сообщений.
- 1 миллион красных сообщений.2 он может немедленно начать обработку красных сообщений.
Есть ли способ достичь этого с помощью RabbitMQ?Если я просто создаю очередь для каждого типа сообщений, я не вижу способа обеспечить порядок сообщений.
Если RabbitMQ не является подходящим инструментом для работы, может быть, есть что-то более подходящее?