azure - 如何从azure公开kafka端点并从本地应用程序使用它?

标签 azure apache-kafka cloud azure-cloud-services

我正在尝试针对以下内容进行 POC:

我在 azure 上托管了一个 kafka 容器。当消费者位于 azure 中时,我能够从消费者向此 kafka 实例发送消息。

docker-compose 中的 Kafka 配置:

kafka:
     image: confluentinc/cp-kafka:latest
     depends_on:
       - zookeeper
     ports:
     - "9092:9092"
     environment:
       KAFKA_ADVERTISED_HOST_NAME: kafka
       KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
       KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://kafka:9092
       KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
       KAFKA_BROKER_ID: 1
       KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
       KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
       KAFKA_HEAP_OPTS: "-Xmx256M -Xms128M"
       KAFKA_LOG_DIRS: /var/lib/winkafka 

azure 上的生产者应用程序配置以与 kafka 对话:


"Endpoint": "kafka:9092"

kafka 和 azure 上的消费者之间的通信正在完美进行。

现在,我希望消费者在本地,而不是在 azure 上。 所以我所做的只是从 azure vm 公开端口 9092,并将端点更新为以下内容:

本地生产者应用程序配置与 azure 上的 kafka 对话:

"Endpoint": "Azure Vm's Public IP:9092"  

但是,它无法从我的本地应用程序连接到 azure 上的 Kafka。

您能否建议我在这里做错了什么,以及如何从本地应用程序连接到在 azure(或任何云)上的容器中运行的 kafka?

最佳答案

您需要为单独的网络(内部 Azure 与公共(public) IP)配置 Kafka 监听器。请参阅https://rmoff.net/2018/08/02/kafka-listeners-explained/以获得详细的解释。

免责声明:我写了这篇博文:)

关于azure - 如何从azure公开kafka端点并从本地应用程序使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53060789/

相关文章:

azure - Microsoft.ApplicationInsights.JavaScript 的 Nuget 更新包错误

python - 尝试在 Python 中使用 bcp 将 CSV 上传到数据库时出现问题

scala - Apache Kafka IO 错误

javascript - 协作者使用 Google Drive/Realtime API 聊天

asp.net-mvc-3 - 专门为 Azure 编写代码?

azure - 是否可以在线查看和管理 Azure 空间 anchor ?

azure - Web api 中的 Crystal 报表在 azure 服务器中无法工作

java - Kafka 模式订阅。新主题未触发再平衡

java - Spring Kafka Error Handler如何避免无限循环

amazon-web-services - AWS 定价 VS 谷歌云平台定价