Как мне транслировать видеофайл с помощью Kafka? - PullRequest
1 голос
/ 18 марта 2019

Я пытаюсь отправить несколько .mp4 файлов в виде сообщений потока kafka.
Я пытался использовать тот же подход, что и для текстовых сообщений, но это не сработало.

Означает ли это, что мне нужен специальный кодировщик / декодер / сериализатор / десериализатор при производстве и потреблении. Как мне настроить моего производителя и потребителя для этого?

1 Ответ

0 голосов
/ 18 марта 2019

создать файл, аналогичный созданию текстового файла

Таким образом, я предполагаю, что вы следуете в качестве примера настройки производителя и потребителя, отправляя текстовые / json сообщения через kafka.

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

Чтобы отправить необработанные байты через kafka, вам нужно использовать ByteArraySerializer в производителе и ByteArrayDeserializer в потребителе.

См: https://kafka.apache.org/20/javadoc/index.html?org/apache/kafka/common/serialization/ByteArrayDeserializer.html https://kafka.apache.org/20/javadoc/org/apache/kafka/common/serialization/ByteArraySerializer.html

Итак, в вашей конфигурации вам нужно указать свойства (при условии, что вы не используете ключи, только значения): Производитель:

"key.serializer":"org.apache.kafka.common.serialization.StringSerializer"
"value.serializer":"org.apache.kafka.common.serialization.ByteArraySerializer"

потребитель:

"key.deserializer":"org.apache.kafka.common.serialization.StringDeserializer"
"value.deserializer":"org.apache.kafka.common.serialization.ByteArrayDeserializer"

Если вы просто хотите отправить файл mp4, прочитайте его в байтах следующим образом (в java): Файл в байт [] в Java

byte[] array = Files.readAllBytes(new File("/path/to/file").toPath());

С другой стороны, в потребителе вы получаете этот байтовый массив и сохраняете их в файл.

...