通过 SOCKS Proxy 连接到 Kafka

jos*_*hal 7 java proxy jvm socks apache-kafka

我有一个在 AWS 上运行的 Kafka 集群。我想从我的应用程序服务器使用标准的kafka-console-consumer连接到集群。应用服务器可以通过 SOCKS-Proxy 访问互联网。无需身份验证

如何告诉 Kafka 客户端通过代理连接?

我尝试了很多方法,包括将标准的 JVM 代理参数添加到kaka-run-class.sh脚本中。但我仍然收到连接拒绝错误。

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 "$@"
Run Code Online (Sandbox Code Playgroud)

编辑: 事实证明,Kafka 使用 java.nio 库。它的套接字实现与代理不兼容。所以我用的jvm参数对Kafka客户端没有影响。

Den*_*din 0

正如评论和编辑中提到的,提问者已经找到了解决方案/根本原因:

事实证明,Kafka 使用的是 java.nio 库。它的套接字实现与代理不兼容。所以我使用的jvm参数对Kafka客户端没有影响。