Как передавать объекты большого объема в Kafka
Сразу нужно отметить -- вопрос чисто академический!!! Очевидно, что брокеры сообщений не предназначены для таких вещей. Но это стоит обсудить, чтобы иметь более полное понимание всех возможностей. Вопрос основан на аналогичном из другого языкового раздела.
Если объем данных каждой из передаваемых сущностьей превышает максимальный объем сообщений в Kafka, как consumer может узнать о завершении передачи очередного объекта?
Первая мысль - использовать дополнительный topic, куда слать сигналы о завершении.
Еще можно пересылать условный код в последних сообщениях. Тогда если у нас Х партиций, то код нужно отправлять в Х последних сообщениях.
Оба способа топорные. Хотелось бы найти более изящное решение.
Ответы (1 шт):
Можно развернуть объектное хранилище (локальный S3 alike, варианты есть здесь и здесь). Процесс получается такой: producer'ы загружают в хранилище большой пакет данных, затем в Кафку передают только путь до этого объекта, а consumer'ы получают сообщение, выгружают файл, обрабатывают, и по завершению удаляют из хранилища.