【发布时间】:2020-06-19 05:26:38
【问题描述】:
我正在使用 Apache Kafka 版本 (2.1.0) 开发流式 API。我有一个 Kafka 集群和一个外部服务器。 外部服务器将生成要在 Kafka 集群上使用的数据。
让我们将外部服务器表示为 E 并将集群表示为 C 。 E 没有安装 Kafka。我在它上面运行一个 JAR 文件来生成消息。这是 Producer 属性的 sn-p:
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "bootstrapIp:9092");
properties.put(ProducerConfig.CLIENT_ID_CONFIG, "producer");
我将 bootstrapIp 设置为 Kafka 代理 IP。
在集群端,我使用以下命令启动消费者控制台:
kafka-console-consumer --bootstrap-server bootstrapIp:9092 --topic T1 --from-beginning
我将bootstrapIp 设置为集群引导服务器IP。
在集群上运行生产者和消费者时,它工作得很好,但是当我在外部服务器中运行生产者(E)和集群中的消费者(C ) 未使用的数据。
在本地主机中,当我在集群中运行生产者和消费者(C)时,一切正常,当在外部运行生产者时,我无法使用数据集群。
从集群 (C) 到外部服务器 (E) 的 ping 正常,但我看不出问题出在哪里。
我不知道如何使用来自外部服务器的消息。
编辑
从外部服务器 (E) 我 telnet (bootstrapIp): telnet bootstrapIp 9092 就可以了,我不明白这个问题
【问题讨论】:
-
您尝试从 'E' ping 到 'C' 吗?我认为这可能是一些DNS问题。此外,我建议您在生产者代码中配置 Logger 并使用 DEBUG 级别日志运行。
-
您确定“外部”生产者可以连接并向 Kafka 发送消息吗?你能运行
$ kafka-topics.sh --bootstrap-server bootstrapIp:9092 --describe --topic T1,并分享生产者日志吗? -
@mrnakumar 是的,ping 正在从 E 到 C 以及从 C 到 E
-
@mazaneicha 这是问题所在,“外部”生产者无法连接到 kafka,但是当我在集群内运行生产者和消费者时,他们可以连接
-
在您的问题中,您正在区分代理 IP 和“引导服务器”IP。它们真的不同吗?
标签: apache-kafka kafka-consumer-api kafka-producer-api