本地连接k8s中的kafka报错

报错内容

error connecting to node 0 at kafka-0.kafka-headless.local:9092

其实就是没有连接上kafka

我是把svc作为nodeport暴露端口出来,去连接这个端口然后报错了。

遇到这种情况,不要怀疑自己,一定是kafka的配置问题。

kafka默认配置是不允许外部连接访问的,只允许localhost,部署的时候一定要修改配置

两种解决办法

1.修改conf/server.perporties

brokerIP 替换为 当前broker的IP。
//每台broker的server.properties 添加如下。
listeners=PLAINTEXT://brokerIP:9092

2.如果是在k8s部署的,就修改官方的charts

修改values.yaml

在这里插入图片描述
external:顾名思义就是对外的意思
根据里面的注释修改配置,尤其是如下这个配置。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要在Java连接Kafka并生产消息,您需要执行以下步骤: 1. 首先,您需要在Java项目添加Kafka客户端依赖。例如,如果您使用Maven,则可以在pom.xml文件添加以下依赖项: ``` <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.8.1</version> </dependency> ``` 2. 接下来,您需要创建一个Kafka生产者实例,用于将消息发送到Kafka集群。您可以使用以下代码创建一个Kafka生产者实例: ```java import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.ProducerRecord; import java.util.Properties; public class KafkaProducerExample { public static void main(String[] args) { String topicName = "my-topic"; String bootstrapServers = "localhost:9092"; // 配置Kafka生产者 Properties props = new Properties(); props.put("bootstrap.servers", bootstrapServers); props.put("acks", "all"); props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // 创建Kafka生产者 Producer<String, String> producer = new KafkaProducer<>(props); // 发送消息 for (int i = 0; i < 10; i++) { String key = "key-" + i; String value = "value-" + i; ProducerRecord<String, String> record = new ProducerRecord<>(topicName, key, value); producer.send(record); } // 关闭Kafka生产者 producer.close(); } } ``` 在上面的代码,我们使用KafkaProducer类创建一个Kafka生产者实例。我们还为生产者设置了一些配置,例如Kafka集群的引导服务器地址、确认级别、序列化器等。然后,我们使用ProducerRecord类创建一个要发送到Kafka主题的消息记录,并使用producer.send()方法发送该记录。最后,我们关闭了Kafka生产者实例。 3. 最后,您需要确保您的Java项目能够连接到正确的Kafka集群。在Kubernetes,您需要使用Kubernetes API或Kubernetes命令行工具(kubectl)来查找Kafka集群的地址和端口,并在Java代码使用它们作为Kafka生产者的引导服务器地址。如果您使用的是Kubernetes集群Kafka,您可以使用Kubernetes服务来公开Kafka集群的地址和端口。例如,如果您的Kafka集群部署在名为"kafka"的Kubernetes服务上,则可以使用以下引导服务器地址: ``` String bootstrapServers = "kafka:9092"; ``` 这样就可以在Java连接Kafka并生产消息了。请注意,上面的代码只是一个简单的示例,您需要根据您的具体需求进行修改和优化。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值