java解析kafkaavro_java-在消费者端通过kafka对UUID进行Avro自定义...

这篇博客介绍了如何在Java Kafka消费者端处理Avro自定义编码,特别是针对UUID的序列化和反序列化。通过使用GenericDatumWriter和ReflectDatumReader,配合自定义的UUIDAsBytesEncoding类,实现了从消息中读取和解码UUID数据。
摘要由CSDN通过智能技术生成

最终找到了解决方案.编码不正确-内置的writeBytes()方法会自动为您写入长度.

然后,在使用者中,我们必须通过GenericDatumWriter进行操作,写入二进制流,然后使用ReflectDatumReader从二进制流中进行读取.这将自动调用UUIAsBytesEncoding read()方法并反序列化UUID.

我的使用者看起来像这样(作为使用者组执行者服务walkthrough here的一部分):

/**

* Start a single consumer instance

* This will use the schema built into the IndexedRecord to decode and create key/value for the message

*/

public void run() {

ConsumerIterator it = this.stream.iterator();

while (it.hasNext()) {

MessageAndMetadata messageAndMetadata = it.next();

try {

String key = (String) messageAndMetadata.key();

IndexedRecord value = (IndexedRecord) messageAndMetadata.message();

ByteArrayOutputStream bytes = new ByteArrayOutputStream();

GenericDatumWriter genericRecordWriter = new GenericDatumWriter<>(value.getSchema());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值