В spring-kafka, как настроить прослушиватель kafka для получения только ключа и метаданных, но без полезной нагрузки?

Можно ли «сказать» брокеру Kafka вообще не отправлять полезную нагрузку записи клиенту? Я знаю, что вы можете настроить прослушиватель так, чтобы он не получал его, не указав его в качестве аргумента:

    @KafkaListener(
            topics = "myTopic",
            groupId = "groupId"
    )
    public void listen(
            @Header(name = KafkaHeaders.RECEIVED_MESSAGE_KEY, required = true) String key,
            ConsumerRecordMetadata meta)
    {
    }

Однако измерения производительности, которые я провел с аргументом @Payload и без него, не сильно отличались, поэтому я предполагаю, что потребительское приложение по-прежнему получает всю полезную нагрузку по сети, но просто не отправляет ее методу, аннотированному @KafkaListener.

Я хотел бы получить только метаданные, включая ключ.

Вы можете использовать объект Message, затем извлечь из него ключ и игнорировать значение вместо двух параметров.

OneCricketeer 12.04.2023 20:57
org.springframework.messaging.Message? Если это так, то он содержит полезную нагрузку, и я намеренно использовал набор аргументов, который не содержит полезную нагрузку.
Konrad 13.04.2023 13:24

Да. Однако, как ответили, вы всегда будете получать всю полезную нагрузку от Kafka API. Разлагает ли Spring это на дополнительные параметры или нет, это отдельная проблема.

OneCricketeer 13.04.2023 14:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

kafka-clients API не позволяет избежать передачи записи value() по сети.

Вы можете минимизировать локальные накладные расходы, используя ByteArrayDeserializer для десериализатора значений, чтобы избежать выполнения каких-либо преобразований после получения.

Другие вопросы по теме