Создание уникального идентификатора клиента в KafkaListener

#spring-boot #kubernetes #spring-kafka

Вопрос:

У меня есть приложение Spring boot, в котором работает потребитель Kafka, который использует сообщения из одной темы, имеющей два раздела(раздел-0 и 1). Приложение развертывается как единый модуль Kubernetes. Я масштабировал приложение, и теперь оно работает в двух блоках. Но префикс идентификатора клиента потребителя, работающего в обоих pod, имеет один и тот же clientIdPrefix «клиент-потребитель-0».

Как сгенерировать clientIdPrefix, уникальный для модуля?

Ответ №1:

Установить потребителя кафки client.id свойства для изменения имени клиента-потребителя https://docs.confluent.io/platform/current/installation/configuration/consumer-configs.html#consumerconfigs_client.id.

Вы можете указать свойство в файле yml, как показано ниже.

 spring:
  kafka:
    consumer:
      properties:
        client.id: ${KAFKA_CLIENT_ID:unique-kafka-client-name}
 

для создания уникального значения идентификатора клиента вы можете использовать информацию о модуле
https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#use-pod-fields-as-values-for-environment-variables

т. е. метаданные.uid

   env:
    - name: KAFKA_CLIENT_ID
      valueFrom:
        fieldRef:
          fieldPath: metadata.uid
 

Комментарии:

1. Спасибо, Омер. Я попробую