Class DefaultKafkaHeaderMapper
java.lang.Object
org.springframework.kafka.support.AbstractKafkaHeaderMapper
org.springframework.kafka.support.DefaultKafkaHeaderMapper
- All Implemented Interfaces:
KafkaHeaderMapper
Default header mapper for Apache Kafka.
Most headers in
KafkaHeaders
are not mapped on outbound messages.
The exceptions are correlation and reply headers for request/reply
messaging.
Header types are added to a special header JSON_TYPES
.- Since:
- 1.3
- Author:
- Gary Russell, Artem Bilan, Soby Chacko
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Represents a header that could not be decoded due to an untrusted type.Nested classes/interfaces inherited from class org.springframework.kafka.support.AbstractKafkaHeaderMapper
AbstractKafkaHeaderMapper.HeaderMatcher, AbstractKafkaHeaderMapper.NeverMatchHeaderMatcher, AbstractKafkaHeaderMapper.SimplePatternBasedHeaderMatcher
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
Header name for java types of other headers.Fields inherited from class org.springframework.kafka.support.AbstractKafkaHeaderMapper
logger
-
Constructor Summary
ConstructorDescriptionConstruct an instance with the default object mapper and default header patterns for outbound headers; all inbound headers are mapped.DefaultKafkaHeaderMapper
(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Construct an instance with the provided object mapper and default header patterns for outbound headers; all inbound headers are mapped.DefaultKafkaHeaderMapper
(com.fasterxml.jackson.databind.ObjectMapper objectMapper, String... patterns) Construct an instance with the provided object mapper and the provided header patterns for outbound headers; all inbound headers are mapped.DefaultKafkaHeaderMapper
(String... patterns) Construct an instance with a default object mapper and the provided header patterns for outbound headers; all inbound headers are mapped. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addToStringClasses
(String... classNames) Add class names that the outbound mapper should perform toString() operations on before mapping.void
addTrustedPackages
(String... packagesToTrust) Add packages to the trusted packages list (defaultjava.util, java.lang
) used when constructing objects from JSON.static DefaultKafkaHeaderMapper
forInboundOnlyWithMatchers
(com.fasterxml.jackson.databind.ObjectMapper objectMapper, String... patterns) Create an instance for inbound mapping only with pattern matching.static DefaultKafkaHeaderMapper
forInboundOnlyWithMatchers
(String... patterns) Create an instance for inbound mapping only with pattern matching.void
fromHeaders
(MessageHeaders headers, org.apache.kafka.common.header.Headers target) Map from the givenMessageHeaders
to the specified target headers.protected com.fasterxml.jackson.databind.ObjectMapper
Return the object mapper.Provide direct access to the toString() classes by subclasses.Provide direct access to the trusted packages set for subclasses.protected boolean
void
setEncodeStrings
(boolean encodeStrings) Set to true to encode String-valued headers as JSON ("..."), by default just the raw String value is converted to a byte array using the configured charset.void
Map from the given native headers to a map of headers for the eventualMessageHeaders
.protected boolean
Methods inherited from class org.springframework.kafka.support.AbstractKafkaHeaderMapper
addMatchers, addRawMappedHeader, getCharset, headerValueToAddIn, headerValueToAddOut, matches, matches, matchesForInbound, setCharset, setMapAllStringsOut, setRawMappedHeaders
-
Field Details
-
JSON_TYPES
Header name for java types of other headers.- See Also:
-
-
Constructor Details
-
DefaultKafkaHeaderMapper
public DefaultKafkaHeaderMapper()Construct an instance with the default object mapper and default header patterns for outbound headers; all inbound headers are mapped. The default pattern list is"!id", "!timestamp" and "*"
. In addition, most of the headers inKafkaHeaders
are never mapped as headers since they represent data in consumer/producer records.- See Also:
-
DefaultKafkaHeaderMapper
public DefaultKafkaHeaderMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Construct an instance with the provided object mapper and default header patterns for outbound headers; all inbound headers are mapped. The patterns are applied in order, stopping on the first match (positive or negative). Patterns are negated by preceding them with "!". The default pattern list is"!id", "!timestamp" and "*"
. In addition, most of the headers inKafkaHeaders
are never mapped as headers since they represent data in consumer/producer records.- Parameters:
objectMapper
- the object mapper.- See Also:
-
DefaultKafkaHeaderMapper
Construct an instance with a default object mapper and the provided header patterns for outbound headers; all inbound headers are mapped. The patterns are applied in order, stopping on the first match (positive or negative). Patterns are negated by preceding them with "!". The patterns will replace the default patterns; you generally should not map the"id" and "timestamp"
headers. Note: most of the headers inKafkaHeaders
are ever mapped as headers since they represent data in consumer/producer records.- Parameters:
patterns
- the patterns.- See Also:
-
DefaultKafkaHeaderMapper
public DefaultKafkaHeaderMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper, String... patterns) Construct an instance with the provided object mapper and the provided header patterns for outbound headers; all inbound headers are mapped. The patterns are applied in order, stopping on the first match (positive or negative). Patterns are negated by preceding them with "!". The patterns will replace the default patterns; you generally should not map the"id" and "timestamp"
headers. Note: most of the headers inKafkaHeaders
are never mapped as headers since they represent data in consumer/producer records.- Parameters:
objectMapper
- the object mapper.patterns
- the patterns.- See Also:
-
-
Method Details
-
forInboundOnlyWithMatchers
Create an instance for inbound mapping only with pattern matching.- Parameters:
patterns
- the patterns to match.- Returns:
- the header mapper.
- Since:
- 2.8.8
-
forInboundOnlyWithMatchers
public static DefaultKafkaHeaderMapper forInboundOnlyWithMatchers(com.fasterxml.jackson.databind.ObjectMapper objectMapper, String... patterns) Create an instance for inbound mapping only with pattern matching.- Parameters:
objectMapper
- the object mapper.patterns
- the patterns to match.- Returns:
- the header mapper.
- Since:
- 2.8.8
-
getObjectMapper
protected com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()Return the object mapper.- Returns:
- the mapper.
-
getTrustedPackages
Provide direct access to the trusted packages set for subclasses.- Returns:
- the trusted packages.
- Since:
- 2.2
-
getToStringClasses
Provide direct access to the toString() classes by subclasses.- Returns:
- the toString() classes.
- Since:
- 2.2
-
isEncodeStrings
protected boolean isEncodeStrings() -
setEncodeStrings
public void setEncodeStrings(boolean encodeStrings) Set to true to encode String-valued headers as JSON ("..."), by default just the raw String value is converted to a byte array using the configured charset. Set to true if a consumer of the outbound record is using Spring for Apache Kafka version less than 2.3- Parameters:
encodeStrings
- true to encode (default false).- Since:
- 2.3
-
addTrustedPackages
Add packages to the trusted packages list (defaultjava.util, java.lang
) used when constructing objects from JSON. If any of the supplied packages is"*"
, all packages are trusted. If a class for a non-trusted package is encountered, the header is returned to the application with value of typeDefaultKafkaHeaderMapper.NonTrustedHeaderType
.- Parameters:
packagesToTrust
- the packages to trust.
-
addToStringClasses
Add class names that the outbound mapper should perform toString() operations on before mapping.- Parameters:
classNames
- the class names.- Since:
- 2.2
-
fromHeaders
Description copied from interface:KafkaHeaderMapper
Map from the givenMessageHeaders
to the specified target headers.- Parameters:
headers
- the abstracted MessageHeaders.target
- the native target headers.
-
toHeaders
Description copied from interface:KafkaHeaderMapper
Map from the given native headers to a map of headers for the eventualMessageHeaders
.- Parameters:
source
- the native headers.headers
- the target headers.
-
trusted
-