本地客户端java或者python程序连接kafka不通的问题

问题描述

在服务器或者虚拟机中安装完zookeeper和kafka后,在服务器端使用kafka的bin目录下的kafka-console-producer.shkafka-console-consumer.sh这两个脚本启动生产者和消费者测试是kafka是有效的,但是在本地机器使用java代码或者python代码连接时,可能会出现这样一个问题,就是producer和consumer代码可以启动,连接没有报错,但是生产和消费的消息好像都没有到达kafka,也就是本地机器上的kafka生产者和消费者代码和服务器上的kafka连接不通。
下面以python为例:
生产者代码:

import sys
sys.path.append('..')
from kafka import KafkaProducer, KafkaConsumer
import json
import time
if __name__ == '__main__':

    producer = KafkaProducer(
            bootstrap_servers=['10.19.1.218:9092'],
            value_serializer=lambda value: json.dumps(value).encode('utf-8')
        )
    print("connect succ....")

    alert_result = {
        "line": '1',  #
        "id": '123',  
        "result": {"md_id": "45",
                   "car": "M1",
                   "fault_code": "001"
                   }
    }
    # 异步发送
    for i in range(10):
        producer.send('test_kafka', value=alert_result)
        # producer.flush()
        time.sleep(0.5)
        print('ok')
    print('完成')

消费者代码:

import sys
sys.path.append('..')
from datetime import datetime
from kafka import KafkaConsumer
import json

if __name__ == '__main__':
    consumer = KafkaConsumer('test_kafka',
                             auto_offset_reset='latest',  # latest/earliest
                             group_id='group1',
                             enable_auto_commit=True,
                             value_deserializer=lambda m: json.loads(m.decode('utf-8')),
                             bootstrap_servers=['10.19.1.218:9092'])
    print(consumer)
    print(type(consumer))
    for message in consumer:
        print(message)

解决方式:

通过修改本地主机的hosts,将服务器的ip和hostname加入本机hosts文件中,然后重启电脑即可

windows系统的hosts文件夹为于C:\Windows\System32\drivers\etc目录下,修改需要管理员权限,如果连接的服务器是集群,那么集群中的所有服务器ip都需要加上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值