TL; DR: у меня много потребителей, работающих над темой Кафки. Через некоторое время большинство из них сделано, и только некоторые продолжают работать. Как я могу перераспределить работу так, чтобы все потребители были заняты?
Подробное описание:
У меня есть одна тема Kafka с сотнями тысяч сообщений на ней. Сообщения по теме имеют нулевой ключ и, таким образом, для начала, данные равномерно распределяются по всем разделам темы. Каждый потребитель в группе потребителей, которая читает сообщения из этой темы, читает сообщения по одному (размер пакета 1), и потребителю требуется от 1 минуты до 10+ минут, чтобы обработать только одно из прочитанных сообщений. Из-за этого я увеличил до 600 экземпляров потребителей в группе потребителей, обрабатывая эти сообщения из 600 тематических разделов. По истечении некоторого времени, поскольку время обработки потребителем сильно варьируется от сообщения к сообщению (1 минута - 10+ минут), в конечном итоге многие потребители заканчивают обработку всех сообщений в назначенном им разделе, в то время как некоторые изпотребители (скажем, 50 из 600) имеют более 1000 сообщений, которые еще предстоит обработать. Это означает, что теперь у меня 550 из 600 потребителей сидят без дела и ничего не делают. Учитывая, что сообщения имеют нулевые ключи, и для меня не имеет значения, в каком случае потребитель получает сообщения или в каком порядке, есть ли способ, которым я могу перебалансировать сообщения по всем промежуточным процессам разделов, чтобы распределить нагрузку, когдаотобрать несколько потребителей, у которых осталось так много сообщений для обработки?