Kafka远程使用者未收到消息

时间:2020-07-25 09:38:53

标签: python-3.x apache-kafka kafka-consumer-api kafka-producer-api

我已经设置了3个节点Confluent / Kafka,它们都指向同一个动物园管理员

所有3台服务器都已发布广告。listener=带有PLAINTEXT的公共ipv4

server.properties:

broker.id.generation.enable=true
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://PUBLIC-IPv4:9092
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
zookeeper.connect=10.114.16.19:2181

生产者和消费者.properties文件仅更改了此值

bootstrap.servers=10.114.16.19:9092,10.114.16.21:9092,10.114.16.20:9092

当我使用节点的公共ip从远程节点运行生产者时,它可以正常工作,并且我可以发送消息并创建主题,但是使用者遇到的问题是没有得到任何消息 这是我正在使用的代码

Producer.py

producer = KafkaProducer(
    bootstrap_servers='PUBLIC-IP:9092',
    value_serializer=lambda v: json.dumps(v).encode('utf-8'))

producer.send('slim', {'topic': 'kafka'})

Consumer.py

print('Making connection.')
consumer = KafkaConsumer(bootstrap_servers='PUBLIC-IP:9092')

print('Assigning Topic.')
consumer.assign([TopicPartition('slim', 2)])

print('Getting message.')
for message in consumer:
    print("OFFSET: " + str(message[0])+ "\t MSG: " + str(message))

当我运行Consumer py客户端时,它保持打开状态并且未收到任何消息 只是为了澄清上面在网上找到的测试代码,因为我仍在学习Kafka API,所以我没有写它

1 个答案:

答案 0 :(得分:0)

首先,请确保您可以ping kafkacat并且不会陷入DNS问题。 如果您使用的是Linux平台,请安装kafkacat -b <BROKER_IP> -t <TOPIC_NAME> ,并通过以下命令测试它是否可以使用数据:

{{1}}
相关问题