kafka-java客户端连接报错解决方案

背景

第一次使用kafka,对他还不是很熟悉。然后在使用java发送消息的时候,一直报错,报错信息如下:

Can't resolve address hostname:9092

解决历程

贴代码, 代码取之于kafka官网示例

package com.amos.learn.util;

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.junit.Test;

import java.util.Properties;

/**
 * @author chenjun
 */
public class KafkaUtil {

    @Test
    public void sendKafka() {

        Properties props = new Properties();
        props.put("bootstrap.servers", "192.168.102.87:9092");
        props.put("acks", "all");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        Producer<String, String> producer = new KafkaProducer<>(props);
        for (int i = 0; i < 1; i++) {
            producer.send(new ProducerRecord<>("your_topic", Integer.toString(i), Integer.toString(i)));
        }
        producer.close();
    }

}

执行该代码一直报错,也就是发送不成。

解决步骤:

  1. 我首先想到了是不是我本地没有访问不到该IP/端口
    还是太幼稚,根本不应该这么想! 为什么呢 ? 结合代码里的kafka配置和报错日志来看,代码里面填写的ip:host,但是呢,报错信息里面却是kafka 服务器的hostname,所以可以断定,客户端代码已经连接到kafka服务器了,要不然它怎么知道hostname的呢 ? 当然这是后话了。 )

打开cmd命令面板,依次输入

ping 192.168.102.87
telnet 192.168.102.87 9092

都可以正常ping通/telnet通

  1. 代码有问题?
    可是,我是从官网取的代码! 暂时排除该可能性

  2. maven包有问题 / 有冲突?
    可能性不大, 日志也没有包含相应的提示

  3. 猜不出答案,借助网络咯
    参考 stackoverflow

修改本机的hosts文件,我的是windows系统,C:\Windows\System32\drivers\etc\hosts
添加一行:

192.168.102.87 your_kafka_hostname

注意:请修改为对应的服务器主机名 , 这一行不用加到hosts文件里

再执行代码,发送成功 。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值