Разница между идентификатором группы, идентификатором клиента и идентификатором в KafkaListener Spring Boot

Я начинаю работать с Spring Boot 2 и Spring Kafka, не совсем понимаю, в чем разница между group id, Client id и id in в интерфейсе KafkaListener. Я знаю, что идентификатор группы используется брокером Kafka для управления несколькими потребителями в одной группе, но как насчет остальных? какое преимущество я получу, установив их? где я могу увидеть эффект от их установки или не установки?

На основе их java-документа:

/**
     * The unique identifier of the container managing for this endpoint.
     * <p>If none is specified an auto-generated one is provided.
     * @return the {@code id} for the container managing for this endpoint.
     * @see org.springframework.kafka.config.KafkaListenerEndpointRegistry#getListenerContainer(String)
     */
String id() default "";

/**
 * Override the {@code group.id} property for the consumer factory with this value
 * for this listener only.
 * @return the group id.
 * @since 1.3
 */
String groupId() default "";

/**
 * When provided, overrides the client id property in the consumer factory
 * configuration. A suffix ('-n') is added for each container instance to ensure
 * uniqueness when concurrency is used.
 * @return the client id prefix.
 * @since 2.1.1
 */
String clientIdPrefix() default "";
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
4
0
7 955
1

Ответы 1

Ваше понимание groupId верное.

id похож на имя bean-компонента в Spring Framework. Однако он используется только в границах KafkaListenerEndpointRegistry. Итак, если вам нужен контроль жизненного цикла конкретного KafkaListenerContainer, созданного для упомянутого @KafkaListener, вам необходимо ввести KafkaListenerEndpointRegistry и использовать упомянутый getListenerContainer() для соответствующего id.

clientIdPrefix является точным отражением свойства client.idKafka Consumer:

An id string to pass to the server when making requests. The purpose of this is to be able to track the source of requests beyond just ip/port by allowing a logical application name to be included in server-side request logging.

что они будут делать в случае горизонтального масштабирования моего потребителя Kafka? Предоставляют ли они какую-либо помощь в случае отслеживания или отладки, если я их установил (идентификатор и идентификатор клиента)? Я до сих пор не понимаю смысла устанавливать их

Am1rr3zA 16.03.2018 16:37

id - это нечто внутреннее для контекста приложения Spring. Это не должно быть уникальным в глобальном масштабе. groupId действительно хороший вариант для масштабирования, когда вы хотите иметь несколько конкурирующих потребителей по одной и той же теме. clientIdPrefix действительно полезен для определения с помощью системы мониторинга, что и где потребляет. Это похоже на глобальный идентификатор вашего приложения.

Artem Bilan 16.03.2018 16:45

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