kafka生产者指定ip
最近工作中遇到一个问题,记录一下,需求中要求往kafka上推送信息。本来是个很简单的需求,但是踩了一个坑。
我通过spring boot集成了kafka写了一个生产者,客户那边给我三个节点的ip,然后我也没多想就配置上来了,但是实际上客户的集群中搞了10个主机部署了kafka,然后我就无了。我只配置了给我的三个节点的hosts,后端就开始疯狂报错hosts unknow的异常。
spring:kafka:bootstrap-servers: ip1:9092,ip2:9092,ip3:9092
这里需要讲一下kafka的机制,当你使用Kafka生产者发送消息时,Kafka会根据负载均衡策略在所有可用的Kafka节点之间进行分配,以确保负载均衡和容错。所以,我的生产者可能会向配置的主机以外的主机发送消息。
如果要限制消息发送到特定的主机, 可以使用spring.kafka.producer.bootstrap-servers
属性来指定要使用的Kafka节点的主机地址,而不是使用spring.kafka.bootstrap-servers
属性。
spring:kafka:producer:bootstrap-servers: ip1:9092,ip2:9092,ip3:9092