apache-kafka - Kafka 中的内部和外部通信
问题描述
流程:本地-->代理--->卡夫卡
advertised.listeners=PLAINTEXT://proxyhostname:8080 - for external communication
listeners=PLAINTEXT://:9092 = for internal communication
•当我们设置这两个属性时,内部通信没有发生。(复制问题和消费者无法通过本地连接,我们必须为消费者通信提供代理IP)
•我们如何有效地利用该属性进行内部和外部沟通?
•有什么替代的想法来进行外部和内部沟通?
解决方案
定义多个监听器是很常见的,Kafka 很好地支持了这一点。
要定义多个侦听器,您需要在advertised.listeners
/中列出所有侦听器listeners
。
如果多个侦听器将使用相同的安全协议 ( PLAINTEXT
),您还需要设置listener.security.protocol.map
将自定义名称映射到安全协议。请参阅Kafka 文档中的代理配置。
例如:
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
advertised.listeners=INTERNAL://:9092,EXTERNAL://proxyhostname:8080
listeners=INTERNAL://:9092,EXTERNAL://:8080
这会将 2 个名称EXTERNAL
和INTERNAL
(您可以使用任何您喜欢的名称,我只是重用了您问题中的名称)映射到PLAINTEXT
安全协议。然后对于每一个,它定义了要侦听的端口和要在元数据响应中通告的主机名。
推荐阅读
- python - 尝试动态创建图表
- pytorch - 将 1 x 1 x 33 张量转换为 1 x 1 x 34,同时保持值并保留第 34 个索引 0
- cytoscape.js - 如何控制箭头端点的大小?
- css - 无法过渡或动画 css 剪辑路径
- excel - 如何将工作表的第一行连接成以逗号分隔的列表?
- c - 任意位长缓冲区的位移
- c - C : Valgrind 告诉“无效写入大小 4”但找不到问题
- javascript - 如何使用“ClientRequest”执行查询字符串?
- c# - 在 Resharper 中的 do-while 中打开大括号后换行,而不是之前
- android - 如何在 Kotlin Android 中通过 POST (volley) 发送音频文件