我有一个运行Kafka消费者的Spring启动应用程序,它从具有两个分区(分区0和分区1)的单个Topic中消费消息。该应用程序部署为单个Kubernetes pod。我已经扩展了应用程序,现在它在两个pod中运行。但是在两个pod中运行的消费者的客户端Id前缀具有相同的clientIdPrefix 'client-consumer-0'。
如何生成的clientIdPrefix唯一的pod?
设置kafka消费者客户端。用于更改消费者客户端名称的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}
为客户端id创建唯一值,可以使用pod infohttps://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/use-pod-fields-as-values-for-environment-variables
。emetadata.uid
env:
- name: KAFKA_CLIENT_ID
valueFrom:
fieldRef:
fieldPath: metadata.uid