【发布时间】:2018-05-14 04:37:42
【问题描述】:
我有一个在 AWS 上运行的 Kafka 集群。我想从我的应用服务器使用标准的 kafka-console-consumer 连接到集群。应用程序服务器可以通过 SOCKS 代理访问 Internet。无需身份验证
如何告诉 Kafka 客户端通过代理进行连接?
我尝试了很多方法,包括将标准 JVM 代理参数添加到 kaka-run-class.sh 脚本中。但我仍然收到 connection denied 错误。
exec $JAVA -DsocksProxyHost=proxy.host.name -DsocksProxyPort=1080 $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@"
编辑: 事实证明,Kafka 使用了 java.nio 库。它的套接字实现与代理不兼容。所以我使用的jvm参数对Kafka客户端没有影响。
【问题讨论】:
-
您找到解决方案了吗?
-
@StasKolodyuk 查看编辑。由于 Kafka 使用 java.nio,因此无法通过 SOCKS-Proxy 建立隧道。
标签: java proxy jvm apache-kafka socks