T
- class of the entity, representing messagespublic class JsonSerializer<T>
extends java.lang.Object
implements org.apache.kafka.common.serialization.Serializer<T>
Serializer
for sending
Java objects to Kafka as JSON.Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ADD_TYPE_INFO_HEADERS
Kafka config property for disabling adding type headers.
|
protected boolean |
addTypeInfo |
protected com.fasterxml.jackson.databind.ObjectMapper |
objectMapper |
static java.lang.String |
TYPE_MAPPINGS
Kafka config property to add type mappings to the type mapper:
'foo:com.Foo,bar:com.Bar'.
|
protected Jackson2JavaTypeMapper |
typeMapper |
Constructor and Description |
---|
JsonSerializer() |
JsonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper) |
Modifier and Type | Method and Description |
---|---|
void |
close() |
void |
configure(java.util.Map<java.lang.String,?> configs,
boolean isKey) |
protected static java.util.Map<java.lang.String,java.lang.Class<?>> |
createMappings(java.lang.String mappings) |
JsonSerializer<T> |
forKeys()
Designate this serializer for serializing keys (default is values); only applies if
the default type mapper is used.
|
Jackson2JavaTypeMapper |
getTypeMapper() |
boolean |
isAddTypeInfo() |
JsonSerializer<T> |
noTypeInfo()
Do not include type info headers.
|
byte[] |
serialize(java.lang.String topic,
org.apache.kafka.common.header.Headers headers,
T data) |
byte[] |
serialize(java.lang.String topic,
T data) |
void |
setAddTypeInfo(boolean addTypeInfo)
Set to false to disable adding type info headers.
|
void |
setTypeMapper(Jackson2JavaTypeMapper typeMapper)
Set a customized type mapper.
|
void |
setUseTypeMapperForKey(boolean isKey)
Configure the default Jackson2JavaTypeMapper to use key type headers.
|
JsonSerializer<T> |
typeMapper(Jackson2JavaTypeMapper mapper)
Use the supplied
Jackson2JavaTypeMapper . |
public static final java.lang.String ADD_TYPE_INFO_HEADERS
public static final java.lang.String TYPE_MAPPINGS
protected final com.fasterxml.jackson.databind.ObjectMapper objectMapper
protected boolean addTypeInfo
protected Jackson2JavaTypeMapper typeMapper
public JsonSerializer()
public JsonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
public boolean isAddTypeInfo()
public void setAddTypeInfo(boolean addTypeInfo)
addTypeInfo
- true to add headers.public Jackson2JavaTypeMapper getTypeMapper()
public void setTypeMapper(Jackson2JavaTypeMapper typeMapper)
typeMapper
- the type mapper.public void setUseTypeMapperForKey(boolean isKey)
isKey
- Use key type headers if truepublic void configure(java.util.Map<java.lang.String,?> configs, boolean isKey)
configure
in interface org.apache.kafka.common.serialization.Serializer<T>
protected static java.util.Map<java.lang.String,java.lang.Class<?>> createMappings(java.lang.String mappings)
@Nullable public byte[] serialize(java.lang.String topic, org.apache.kafka.common.header.Headers headers, @Nullable T data)
serialize
in interface org.apache.kafka.common.serialization.Serializer<T>
@Nullable public byte[] serialize(java.lang.String topic, @Nullable T data)
serialize
in interface org.apache.kafka.common.serialization.Serializer<T>
public void close()
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
close
in interface org.apache.kafka.common.serialization.Serializer<T>
public JsonSerializer<T> forKeys()
setUseTypeMapperForKey(boolean)
public JsonSerializer<T> noTypeInfo()
setAddTypeInfo(boolean)
public JsonSerializer<T> typeMapper(Jackson2JavaTypeMapper mapper)
Jackson2JavaTypeMapper
.mapper
- the mapper.setTypeMapper(Jackson2JavaTypeMapper)