我已经设置了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,所以我没有写它
答案 0 :(得分:0)
首先,请确保您可以ping kafkacat
并且不会陷入DNS问题。
如果您使用的是Linux平台,请安装kafkacat -b <BROKER_IP> -t <TOPIC_NAME>
,并通过以下命令测试它是否可以使用数据:
{{1}}