#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. Спасибо, Омер. Я попробую