Публикация всего файла в виде одного сообщения в теме Kafka с использованием Java

У меня есть вариант использования, когда мне нужно опубликовать весь файл как одно сообщение с помощью Kafka Producer, чтобы, когда потребитель читает сообщение, потребитель мог получить весь файл. Я попытался реализовать это, преобразовав файл в массив байтов и опубликовав его в теме.

byte[] fileData = Files.readAllBytes(Paths.get(path));
producer.send(new ProducerRecord<String, byte[]>("test", fileData));

Когда то же самое потребляется, каждая строка приходит как отдельное сообщение


person Gaja    schedule 06.08.2020    source источник


Ответы (1)


Kafka имеет размер записи по умолчанию 1 МБ и не предназначена для доставки файлов.

Рекомендуемый шаблон:

  1. Загрузите файл в общую файловую систему (например, S3)
  2. Возьмите путь к файлу как URI (например, s3://path/to/file)
  3. Создайте этот URI в записи темы
  4. Потреблять
  5. Скачать файл из файловой системы

Не видя вашего потребителя, трудно диагностировать точную проблему с потребителем, но вы прекрасно читаете файл.

person OneCricketeer    schedule 06.08.2020