Example usage for org.springframework.kafka.support.converter KafkaMessageHeaders getRawHeaders

List of usage examples for org.springframework.kafka.support.converter KafkaMessageHeaders getRawHeaders

Introduction

In this page you can find the example usage for org.springframework.kafka.support.converter KafkaMessageHeaders getRawHeaders.

Prototype

@Override
    public Map<String, Object> getRawHeaders() 

Source Link

Usage

From source file:org.springframework.kafka.support.converter.BatchMessagingMessageConverter.java

@Override
public Message<?> toMessage(List<ConsumerRecord<?, ?>> records, Acknowledgment acknowledgment,
        Consumer<?, ?> consumer, Type type) {
    KafkaMessageHeaders kafkaMessageHeaders = new KafkaMessageHeaders(this.generateMessageId,
            this.generateTimestamp);

    Map<String, Object> rawHeaders = kafkaMessageHeaders.getRawHeaders();
    List<Object> payloads = new ArrayList<>();
    List<Object> keys = new ArrayList<>();
    List<String> topics = new ArrayList<>();
    List<Integer> partitions = new ArrayList<>();
    List<Long> offsets = new ArrayList<>();
    List<String> timestampTypes = new ArrayList<>();
    List<Long> timestamps = new ArrayList<>();
    List<Map<String, Object>> convertedHeaders = new ArrayList<>();
    List<Headers> natives = new ArrayList<>();
    rawHeaders.put(KafkaHeaders.RECEIVED_MESSAGE_KEY, keys);
    rawHeaders.put(KafkaHeaders.RECEIVED_TOPIC, topics);
    rawHeaders.put(KafkaHeaders.RECEIVED_PARTITION_ID, partitions);
    rawHeaders.put(KafkaHeaders.OFFSET, offsets);
    rawHeaders.put(KafkaHeaders.TIMESTAMP_TYPE, timestampTypes);
    rawHeaders.put(KafkaHeaders.RECEIVED_TIMESTAMP, timestamps);
    if (this.headerMapper != null) {
        rawHeaders.put(KafkaHeaders.BATCH_CONVERTED_HEADERS, convertedHeaders);
    } else {/*w w w  . j  av  a  2  s.c  o m*/
        rawHeaders.put(KafkaHeaders.NATIVE_HEADERS, natives);
    }

    if (acknowledgment != null) {
        rawHeaders.put(KafkaHeaders.ACKNOWLEDGMENT, acknowledgment);
    }
    if (consumer != null) {
        rawHeaders.put(KafkaHeaders.CONSUMER, consumer);
    }

    boolean logged = false;
    for (ConsumerRecord<?, ?> record : records) {
        payloads.add(this.recordConverter == null || !containerType(type) ? extractAndConvertValue(record, type)
                : convert(record, type));
        keys.add(record.key());
        topics.add(record.topic());
        partitions.add(record.partition());
        offsets.add(record.offset());
        timestampTypes.add(record.timestampType().name());
        timestamps.add(record.timestamp());
        if (this.headerMapper != null) {
            Map<String, Object> converted = new HashMap<>();
            this.headerMapper.toHeaders(record.headers(), converted);
            convertedHeaders.add(converted);
        } else {
            if (this.logger.isDebugEnabled() && !logged) {
                this.logger.debug("No header mapper is available; Jackson is required for the default mapper; "
                        + "headers (if present) are not mapped but provided raw in "
                        + KafkaHeaders.NATIVE_HEADERS);
                logged = true;
            }
            natives.add(record.headers());
        }
    }
    return MessageBuilder.createMessage(payloads, kafkaMessageHeaders);
}

From source file:org.springframework.kafka.support.converter.MessagingMessageConverter.java

@Override
public Message<?> toMessage(ConsumerRecord<?, ?> record, Acknowledgment acknowledgment, Consumer<?, ?> consumer,
        Type type) {/*from   ww  w  .  j a v  a2s  .com*/
    KafkaMessageHeaders kafkaMessageHeaders = new KafkaMessageHeaders(this.generateMessageId,
            this.generateTimestamp);

    Map<String, Object> rawHeaders = kafkaMessageHeaders.getRawHeaders();
    if (this.headerMapper != null) {
        this.headerMapper.toHeaders(record.headers(), rawHeaders);
    } else {
        if (this.logger.isDebugEnabled()) {
            this.logger.debug("No header mapper is available; Jackson is required for the default mapper; "
                    + "headers (if present) are not mapped but provided raw in " + KafkaHeaders.NATIVE_HEADERS);
        }
        rawHeaders.put(KafkaHeaders.NATIVE_HEADERS, record.headers());
    }
    rawHeaders.put(KafkaHeaders.RECEIVED_MESSAGE_KEY, record.key());
    rawHeaders.put(KafkaHeaders.RECEIVED_TOPIC, record.topic());
    rawHeaders.put(KafkaHeaders.RECEIVED_PARTITION_ID, record.partition());
    rawHeaders.put(KafkaHeaders.OFFSET, record.offset());
    rawHeaders.put(KafkaHeaders.TIMESTAMP_TYPE, record.timestampType().name());
    rawHeaders.put(KafkaHeaders.RECEIVED_TIMESTAMP, record.timestamp());

    if (acknowledgment != null) {
        rawHeaders.put(KafkaHeaders.ACKNOWLEDGMENT, acknowledgment);
    }
    if (consumer != null) {
        rawHeaders.put(KafkaHeaders.CONSUMER, consumer);
    }

    return MessageBuilder.createMessage(extractAndConvertValue(record, type), kafkaMessageHeaders);
}