Мне интересно, есть ли что-то, чего мне не хватает в моей настройке, чтобы облегчить длительные задания.
Для моих целей вполне нормально иметь At most once
доставку сообщений, это означает, что не нужно думать о фиксации смещений (или, по крайней мере, можно зафиксировать каждое смещение сообщения при его получении).
У меня есть следующее, чтобы добиться конкурентной потребительской модели:
- Тема
- X потребителей в одной группе
- P разделов в теме (где P> = X всегда)
Моя проблема в том, что у меня есть сообщения, для обработки которых может потребоваться ~ 15 минут (но это может колебаться, скажем, до 50%). Чтобы избежать отмены назначений для потребителей, я увеличил значение max.poll.interval.ms
, чтобы отразить это.
Однако это имеет некоторые негативные последствия:
- если какое-либо сообщение превышает этот промежуток времени, то в худшем случае потребитель, обрабатывающий это сообщение, должен будет подождать до значения
max.poll.interval.ms
для восстановления баланса
- если мне нужно масштабировать и увеличивать количество потребителей в зависимости от нагрузки, тогда любым новым потребителям может также понадобиться подождать значение
max.poll.interval.ms
, чтобы произошло перебалансирование для обработки любых новых сообщений
В настоящий момент я вижу, что могу действовать следующим образом:
- Установите
max.poll.interval.ms
в качестве небольшого значения и примите во внимание, что каждый потребитель, обрабатывающий каждое сообщение, будет выполнять тайм-аут и проходить через процесс отмены назначений и ожидания небольшого количества времени для восстановления баланса
Однако мне это не нравится, и я рассматриваю альтернативные технологии для своей очереди сообщений, поскольку я не вижу очевидных путей решения этой проблемы.
По общему признанию я новичок в Kafka, и это - только внутреннее чувство, что вышеупомянутое не желательно.
Раньше я использовал RabbitMQ для этих сценариев, однако в настоящее время нам нужна Kafka в нашей архитектуре для других целей, и было бы неплохо не вводить другую технологию, если Kafka может достичь этого.
Я ценю любые советы, которые кто-либо может предложить по этому вопросу.