kafka自定义序列化器
《kafka权威指南》
Customer.java
public class Customer {
private int customId;
private String customerName;
public Customer(int customId, String customerName) {
this.customId = customId;
this.customerName = customerName;
}
public int getCustomId() {
return customId;
}
public void setCustomId(int customId) {
this.customId = customId;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
}
CustomerSerializer.java
import org.apache.commons.lang.SerializationException;
import org.apache.kafka.common.serialization.Serializer; import java.nio.ByteBuffer;
import java.util.Map; /**
* 自定义序列化器
* */
public class CustomerSerializer implements Serializer<Customer> { public void configure(Map<String, ?> configs, boolean isKey) {
//不做任何配置
} /**
* Customer对象被序列化成:
* 1. 表示customerId的4字节整数
* 2. 表示customerName长度的4字节整数(如果customerName为空,则长度为0)
* 3. 表示customerName的N个字节
*
* */
public byte[] serialize(String topic, Customer data) {
try{
byte[] serializedName;
int stringSize;
if(data == null)
return null;
else{
if(data.getCustomerName() != null){
serializedName = data.getCustomerName().getBytes("UTF-8");
stringSize = serializedName.length; } //if
else{
serializedName = new byte[0];
stringSize = 0;
}
ByteBuffer buffer = ByteBuffer.allocate(4 + 4 + stringSize);
buffer.putInt(data.getCustomId());
buffer.putInt(stringSize);
buffer.put(serializedName);
return buffer.array();
} //else
} catch (Exception e){
e.printStackTrace();
throw new SerializationException("Error when serizlizing custromer to byte[]" +
e);
}
} public void close() { }
}
kafka自定义序列化器的更多相关文章
- Hive中自定义序列化器(带编码)
hive SerDe的简介 https://www.jianshu.com/p/afee9acba686 问题 数据文件为文本文件,每一行为固定格式,每一列的长度都是定长或是有限制范围,考虑采用hiv ...
- kafka 自定义分区器
package cn.xiaojf.kafka.producer; import org.apache.kafka.clients.producer.Partitioner; import org.a ...
- Newtonsoft.Json 自定义序列化器---时间
IsoDateTimeConverter _IsoDateTimeConverter = new IsoDateTimeConverter() { DateTimeFormat = "yyy ...
- DRF中的序列化器
DRF中的序列化器详细应用 视图的功能:说白了就是接收前端请求,进行数据处理 (这里的处理包括:如果前端是GET请求,则构造查询集,将结果返回,这个过程为序列化:如果前端是POST请求,假如要对数 ...
- 066.Python框架DRF之序列化器Serializer
一 序列化器-Serializer 作用: 1. 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串 2. 反序列化,把客户端发送过来的数据,经过request以后变成 ...
- 经历了源码的痛苦,掌握DRF的核心序列化器
目录 DRF的核心--序列化器 序列化器 什么是序列化和反序列化? 序列化 序列化demo 字段类型 字段参数 序列化自定制返回字段 方法一:在序列化类(serializers.py)中写 方法二:在 ...
- 序列化器中钩子函数源码分析、many关键字源码分析
局部钩子和全局钩子源码分析(2星) # 入口是 ser.is_valid(),是BaseSerializer的方法 # 最核心的代码 self._validated_data = self.run_v ...
- ASP.NET MVC4 json序列化器
ASP.NET MVC4中调用WEB API的四个方法 2012年06月07日00:05 it168网站原创 作者:廖煜嵘 编辑:景保玉 我要评论(0) [IT168技术]当今的软件开发中,设计软件的 ...
- WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer)
原文:WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济 ...
随机推荐
- 基于SSH协议clone GitHub远端仓库到本地-git
经常逛 GitHub 的可能都知道,在 clone 远端仓库的时候,会有两个选项,如下图: 首先我们来说明一下两种方式的区别. 使用 HTTPS url 克隆对初学者来说会比较方便,复制HTTPS u ...
- vmware vSphere虚拟网络(一)
为了更好的了解vSphere网络虚拟化解决方案,这里引入了一些概念,以便我们更好的了解虚拟网络. 一.网卡: 物理网卡称为vmnic,在ESXi中,第一块物理网卡叫做vmnic0,第二块叫做vmnic ...
- postgreSQL PL/SQL编程学习笔记(四)
Errors and Messages 1. Reporting Errors and Messages Use the RAISE statement to report messages and ...
- 谈谈你对Java平台理解
一说起对Java理解很容易就联想到Java的一些特性: 1,面向对象(继承,多态,封装) 2,平台无关性(”一次书写,到处运行“,jvm运行.class文件) 3,语言(泛型,lambda) 4,类库 ...
- Win通过端口号结束进程
准备: 01在cmd中查看命令使用 格式:命令名称 /? 02netstat 03findstr C:\Users\Good>findstr /? 在文件中寻找字符串. ...... strin ...
- SDUT OJ 数据结构实验之链表九:双向链表
数据结构实验之链表九:双向链表 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- mysql自动备份并上传至git仓库
自动备份 备份需求 数据库备份的重要性再怎么强调也不为过.当你的操作出现差错,但又因为没有作备份导致数据无法还原时,你就能体会到“万念俱灰”的心情了. 数据库备份有多种形式,本文以我的个人网站数据 ...
- [NOI2010]能量采集 BZOJ2005 数学(反演)&&欧拉函数,分块除法
题目描述 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的植物种得非常整齐,一共 ...
- MYSQL 面试常见问题汇总
转自: https://blog.csdn.net/u011010851/article/details/80074550 Q1:主键,外键,超键,候选键:主键 对表中数据进行唯一标识的数据列的 ...
- Qt 学习之路 2(30):Graphics View Framework
Qt 学习之路 2(30):Graphics View Framework 豆子 2012年12月11日 Qt 学习之路 2 27条评论 Graphics View 提供了一种接口,用于管理大量自定义 ...