我想将多个.mp4
文件作为kafka流消息发送。
我尝试按照文本消息的方式进行,但没有成功。
这是否意味着在生产和消费时需要特殊的编码器/解码器/序列化程序/反序列化程序。我应该如何配置生产者和消费者?
我想将多个.mp4
文件作为kafka流消息发送。
我尝试按照文本消息的方式进行,但没有成功。
这是否意味着在生产和消费时需要特殊的编码器/解码器/序列化程序/反序列化程序。我应该如何配置生产者和消费者?
创建类似于文本文件创建的文件
由此,我假设您正在按照设置生产者和消费者、通过kafka发送文本/json消息的示例进行操作。
在您的情况下,您需要将视频文件/片段/块序列化为字节,将原始字节发送到kafka,然后在消费者中读取这些字节并将其反序列化为视频文件/片段/块。
要通过kafka发送原始字节,您需要在生产者中使用ByteArraySerializer
,在消费者中使用ByteArrayDeserializer
。
See: 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"
byte[] array = Files.readAllBytes(new File("/path/to/file").toPath());
max.message.bytes
设置为较大的数字。请记住,发送较大的记录将导致更长的GC暂停。您确定要将视频发送到Kafka吗?将文件放在共享存储(如S3)上,并传递引用资产的元数据如何? - Chris Matta