Safeties 2025-10-17 17:10 采纳率: 0%
浏览 12

idea连接kafka拒绝连接

我在虚拟机上安装了kafka并启动,然后再maven项目里编写了测试文件,显示kafka拒绝连接

img

  • 写回答

3条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-10-17 17:13
    关注

    让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。

    如果答案让您满意,请采纳、点赞、关注,非常感谢!
    .
    每日一句正能量,让它带给您好心情:努力的意义,在于当机会来临时,你有能力抓住它。
    .

    Kafka连接拒绝问题分析与解决

    根据您提供的错误信息,这是一个典型的Kafka连接问题。以下是详细的分析和解决方案:

    问题分析

    从错误日志可以看到:

    • 连接目标:192.168.15.10
    • 错误类型:Connection refused: no further information
    • 这表明客户端无法连接到Kafka服务器

    解决方案

    1. 检查Kafka服务状态

    首先确认Kafka服务正在运行:

    # 检查Kafka服务状态
    systemctl status kafka
    # 或者
    ps aux | grep kafka
    
    
    # 如果Kafka未运行,启动服务
    systemctl start kafka
    # 或者使用Kafka自带的启动脚本
    /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
    

    2. 验证Kafka配置

    检查Kafka服务器的 server.properties 配置文件:

    # 查看Kafka配置
    cat /opt/kafka/config/server.properties | grep -E "(listeners|advertised.listeners|host.name)"
    

    关键配置项:

    # 确保监听地址正确配置
    listeners=PLAINTEXT://0.0.0.0:9092
    # 或者指定具体IP
    listeners=PLAINTEXT://192.168.15.10:9092
    
    
    # 广告地址(客户端连接使用的地址)
    advertised.listeners=PLAINTEXT://192.168.15.10:9092
    

    3. 检查网络连接

    从客户端测试网络连通性:

    # 测试端口连通性
    telnet 192.168.15.10 9092
    
    
    # 或者使用nc命令
    nc -zv 192.168.15.10 9092
    

    4. 检查防火墙设置

    确保防火墙没有阻止Kafka端口:

    # 检查防火墙状态
    systemctl status firewalld
    # 或
    ufw status
    
    
    # 如果防火墙开启,添加Kafka端口例外
    firewall-cmd --permanent --add-port=9092/tcp
    firewall-cmd --reload
    

    5. 修改客户端配置

    在您的Java代码中,确保正确配置bootstrap servers:

    Properties props = new Properties();
    // 使用正确的Kafka服务器地址和端口
    props.put("bootstrap.servers", "192.168.15.10:9092");
    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);
    

    6. 完整的测试代码示例

    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 KafkaTest {
        public static void main(String[] args) {
            Properties props = new Properties();
            props.put("bootstrap.servers", "192.168.15.10:9092");
            props.put("acks", "all");
            props.put("retries", 0);
            props.put("batch.size", 16384);
            props.put("linger.ms", 1);
            props.put("buffer.memory", 33554432);
            props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
            props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    
    
            try (Producer<String, String> producer = new KafkaProducer<>(props)) {
                producer.send(new ProducerRecord<>("test-topic", "key", "value"));
                System.out.println("消息发送成功");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

    7. 排查步骤总结

    1. ✅ 确认Kafka服务正在运行
    2. ✅ 检查Kafka配置中的监听地址
    3. ✅ 验证网络连通性
    4. ✅ 检查防火墙设置
    5. ✅ 确认客户端配置的地址正确

    按照以上步骤逐一排查,应该能够解决连接拒绝的问题。如果问题仍然存在,请检查虚拟机的网络配置和Kafka日志获取更多详细信息。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月17日