如何从外部服务器连接到 kafka 服务器?
How can I connect to the kafka server from an external server?
我在 Google 云上有一个包含 3 个实例的 kafka 集群。
我想通过另一台外部服务器上的 python 文件配置消费者。
这里是 python 代码:
from kafka import KafkaConsumer
from json import loads
if __name__ == "__main__":
topic_name = "test"
consumer = KafkaConsumer(
topic_name,
bootstrap_servers=[
"externalIP:9092",
"externalIP:9092",
"externalIP:9092",
],
auto_offset_reset="latest",
enable_auto_commit=True,
group_id="test-consumer-group",
value_deserializer=lambda x: loads(x.decode("utf-8")),
consumer_timeout_ms=1000,
)
print(consumer.topics())
print("[begin] get consumer list")
for message in consumer:
print("test")
print(
"Topic: %s, Partition: %d, Offset: %d, Key: %s, Value: %s"
% (
message.topic,
message.partition,
message.offset,
message.key,
message.value,
)
)
print("[end] get consumer list")
在 GCP 实例上配置的 config/server.properties 文件如下所示:
broker.id=0
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://kafka-1:9092
我根据搜索到的所有情况修改了配置文件,但是Python代码中只打印了topic,收不到数据
(数据收集在与生产者相同的服务器内实时确认)
我试过断开内部和外部连接,我什么都试过了,但我就是搞不定。请帮助我
您需要通告一个外部可解析地址。
请参考- https://www.confluent.io/blog/kafka-listeners-explained/
如果您对使用 GKE Kubernetes 感兴趣,可以部署 Strimzi 运算符,它可用于为您配置外部可解析地址等功能。
我在 Google 云上有一个包含 3 个实例的 kafka 集群。
我想通过另一台外部服务器上的 python 文件配置消费者。
这里是 python 代码:
from kafka import KafkaConsumer
from json import loads
if __name__ == "__main__":
topic_name = "test"
consumer = KafkaConsumer(
topic_name,
bootstrap_servers=[
"externalIP:9092",
"externalIP:9092",
"externalIP:9092",
],
auto_offset_reset="latest",
enable_auto_commit=True,
group_id="test-consumer-group",
value_deserializer=lambda x: loads(x.decode("utf-8")),
consumer_timeout_ms=1000,
)
print(consumer.topics())
print("[begin] get consumer list")
for message in consumer:
print("test")
print(
"Topic: %s, Partition: %d, Offset: %d, Key: %s, Value: %s"
% (
message.topic,
message.partition,
message.offset,
message.key,
message.value,
)
)
print("[end] get consumer list")
在 GCP 实例上配置的 config/server.properties 文件如下所示:
broker.id=0
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://kafka-1:9092
我根据搜索到的所有情况修改了配置文件,但是Python代码中只打印了topic,收不到数据
(数据收集在与生产者相同的服务器内实时确认)
我试过断开内部和外部连接,我什么都试过了,但我就是搞不定。请帮助我
您需要通告一个外部可解析地址。
请参考- https://www.confluent.io/blog/kafka-listeners-explained/
如果您对使用 GKE Kubernetes 感兴趣,可以部署 Strimzi 运算符,它可用于为您配置外部可解析地址等功能。