我需要制作人序列化并发送一个包含字节缓冲区(视频块)和字符串的自定义对象:
public class NvrWSBinaryMessage {
private String messageUuid;
private final ByteBuffer payload;
...
让消费者正确反序列化。
我还没有找到一个正确的方法来为具有ByteBuffer的对象创建自定义序列化器/反序列化器。我试图将对象作为字节数组发送,但没有成功。
有一个ByteBufferSerializer
/ByteBufferDeserializer
你可以使用你的kafka客户端(生产者/消费者),然而,这将需要你发送ByteBuffer payload
作为kafka消息/记录值和String messageUuid
作为密钥。序列化2.8 docs
如果你没有这种灵活性,那么我建议在你想要发送的对象上利用jackson注释(类似于引用)作为记录值,并为你的客户端使用JsonSerializer
/JsonDeserializer
。
序列化将对象转换为字节码格式,因此在传递包含字节的对象作为要序列化的值而不需要任何额外配置时,它会变得棘手。注释用于消除任何序列化歧义,允许Kafka提供的序列化器毫无问题地完成这项工作。