Как мне создать общую очередь?

#apache-kafka #kafka-consumer-api

#apache-kafka #kafka-consumer-api

Вопрос:

Из того, что я понял, у каждого раздела может быть только 1 потребитель (для каждой группы потребителей), и, желая создать очередь, я должен использовать только 1 группу потребителей, так как несколько из них будут получать одинаковые сообщения

Проблема: у меня есть 2 потребителя, каждое событие, обрабатываемое потребителем / потребителями, может занять от 1 минуты до 30 минут, я создаю 2 раздела для распределения событий между 2 потребителями. Первый раздел получает 2 события, для обработки каждого из которых требуется по 30 минут, второй раздел получает 1 событие, для обработки которого требуется всего 1 минута. Неужели нет способа создать общую очередь? Например, как только рабочий / потребитель свободен, он извлекает другое событие там, где это необходимо (несколько потребителей для одного и того же раздела, но не считывает одни и те же события дважды)?

Ответ №1:

«Нет ли способа создать общую очередь?»

Один раздел может быть использован только одним потребителем в Группе потребителей. Эта концепция не может быть изменена.

Вы могли бы увеличить количество разделов до большего числа, надеясь, что события, обработка которых занимает много времени, будут равномерно распределены по разделам в долгосрочной перспективе. Или, что еще лучше, если у вас заранее есть информация о времени обработки и у вас есть контроль над производителем, вы можете управлять разделением событий вручную, чтобы добиться равномерного распределения.

Если у вас нет контроля над производителем, у вас может быть выделенный потребитель, который просто выполняет распределение во вторую тему, а затем позволяет заданию обработки использовать вторую тему.