Class BatchMessagingMessageConverter
java.lang.Object
org.springframework.kafka.support.converter.BatchMessagingMessageConverter
- All Implemented Interfaces:
BatchMessageConverter,MessageConverter
A Messaging
MessageConverter implementation used with a batch
message listener; the consumer record values are extracted into a collection in
the message payload.
Populates KafkaHeaders based on the ConsumerRecord onto the returned message.
Each header is a collection where the position in the collection matches the payload
position.
If a RecordMessageConverter is provided, and the batch type is a ParameterizedType
with a single generic type parameter, each record will be passed to the converter, thus supporting
a method signature List<MyType> myObjects.
- Since:
- 1.1
- Author:
- Marius Bogoevici, Gary Russell, Dariusz Szablinski, Biju Kunjummen, Sanghyeok An, Hope Kim, Borahm Lee, Artem Bilan, Soby Chacko, George Mahfoud
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCreate an instance with a defaultMessagingMessageConverterfor record conversion.BatchMessagingMessageConverter(@Nullable RecordMessageConverter recordConverter) Create an instance that converts record values using the supplied converter. -
Method Summary
Modifier and TypeMethodDescriptionprotected @Nullable Objectconvert(org.apache.kafka.clients.consumer.ConsumerRecord<?, ?> record, Type type, List<ConversionException> conversionFailures) Convert the record value.protected ObjectextractAndConvertValue(org.apache.kafka.clients.consumer.ConsumerRecord<?, ?> record, Type type) Subclasses can convert the value; by default, it's returned as provided by Kafka unless aRecordMessageConverterhas been provided.List<org.apache.kafka.clients.producer.ProducerRecord<?, ?>> fromMessage(Message<?> message, String defaultTopic) Convert a message to a producer record.@Nullable RecordMessageConverterReturn the record converter used by this batch converter, if configured, or null.voidsetGenerateMessageId(boolean generateMessageId) GenerateMessageidsfor produced messages.voidsetGenerateTimestamp(boolean generateTimestamp) Generatetimestampfor produced messages.voidsetHeaderMapper(KafkaHeaderMapper headerMapper) Set the header mapper to map headers.voidsetMessagingConverter(@Nullable SmartMessageConverter messagingConverter) Set aSmartMessageConverterto convert the record value to the desired type.voidsetRawRecordHeader(boolean rawRecordHeader) Set to true to add the rawList<ConsumerRecord<?, ?>>as a headerKafkaHeaders.RAW_DATA.Message<?> toMessage(List<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>> records, @Nullable Acknowledgment acknowledgment, @Nullable org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, Type type) Convert a list ofConsumerRecordto aMessage.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.kafka.support.converter.MessageConverter
commonHeaders
-
Field Details
-
logger
-
-
Constructor Details
-
BatchMessagingMessageConverter
public BatchMessagingMessageConverter()Create an instance with a defaultMessagingMessageConverterfor record conversion.- Since:
- 3.3.11
-
BatchMessagingMessageConverter
Create an instance that converts record values using the supplied converter.- Parameters:
recordConverter- the converter.- Since:
- 1.3.2
-
-
Method Details
-
setGenerateMessageId
public void setGenerateMessageId(boolean generateMessageId) GenerateMessageidsfor produced messages. If set tofalse, will try to use a default value. By default, set tofalse.- Parameters:
generateMessageId- true if a message id should be generated
-
setGenerateTimestamp
public void setGenerateTimestamp(boolean generateTimestamp) Generatetimestampfor produced messages. If set tofalse, -1 is used instead. By default, set tofalse.- Parameters:
generateTimestamp- true if a timestamp should be generated
-
setHeaderMapper
Set the header mapper to map headers.- Parameters:
headerMapper- the mapper.- Since:
- 1.3
-
getRecordMessageConverter
Description copied from interface:BatchMessageConverterReturn the record converter used by this batch converter, if configured, or null.- Specified by:
getRecordMessageConverterin interfaceBatchMessageConverter- Returns:
- the converter or null.
-
setMessagingConverter
Set aSmartMessageConverterto convert the record value to the desired type.- Parameters:
messagingConverter- the converter.- Since:
- 3.3.11
-
setRawRecordHeader
public void setRawRecordHeader(boolean rawRecordHeader) Set to true to add the rawList<ConsumerRecord<?, ?>>as a headerKafkaHeaders.RAW_DATA.- Parameters:
rawRecordHeader- true to add the header.- Since:
- 2.7
-
toMessage
public Message<?> toMessage(List<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>> records, @Nullable Acknowledgment acknowledgment, @Nullable org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, Type type) Description copied from interface:BatchMessageConverterConvert a list ofConsumerRecordto aMessage.- Specified by:
toMessagein interfaceBatchMessageConverter- Parameters:
records- the records.acknowledgment- the acknowledgment.consumer- the consumer.type- the required payload type.- Returns:
- the message.
-
fromMessage
public List<org.apache.kafka.clients.producer.ProducerRecord<?,?>> fromMessage(Message<?> message, String defaultTopic) Description copied from interface:BatchMessageConverterConvert a message to a producer record.- Specified by:
fromMessagein interfaceBatchMessageConverter- Parameters:
message- the message.defaultTopic- the default topic to use if no header found.- Returns:
- the producer records.
-
extractAndConvertValue
protected Object extractAndConvertValue(org.apache.kafka.clients.consumer.ConsumerRecord<?, ?> record, Type type) Subclasses can convert the value; by default, it's returned as provided by Kafka unless aRecordMessageConverterhas been provided.- Parameters:
record- the record.type- the required type.- Returns:
- the value.
-
convert
protected @Nullable Object convert(org.apache.kafka.clients.consumer.ConsumerRecord<?, ?> record, Type type, List<ConversionException> conversionFailures) Convert the record value.- Parameters:
record- the record.type- the type - must be aParameterizedTypewith a single generic type parameter.conversionFailures- Conversion failures.- Returns:
- the converted payload, potentially further processed by a
SmartMessageConverter.
-