首页 > 解决方案 > getPartitionedTopicMetadata 时无法获得连接 - io.netty.channel.ConnectTimeoutException:连接超时

问题描述

我有一个基本的 Pulsar 应用程序,当我尝试连接到 Pulsar 时,我得到了这个异常:

2021-03-10 14:38:26.107 WARN 7 --- [r-client-io-1-1] oapulsar.client.impl.ConnectionPool:无法打开与 my-pulsar-server-ms-tls.domain 的连接.com:6651:io.netty.channel.ConnectTimeoutException:连接超时:my-pulsar-server-ms-tls.domain.com/10.80.13.38:6651 2021-03-10 14:38:26.212 WARN 7 -- - [al-listener-3-1] oapulsar.client.impl.PulsarClientImpl : [topic: persistent://myTenant/myNamespace/myTopic] 在 getPartitionedTopicMetadata 时无法获得连接 -- 将在 100 毫秒后重试

我的 Pulsar 客户端非常基础:

PulsarClient.builder()
     .serviceUrl(serviceUrl)
     .authentication(AuthenticationFactory.token(authToken))
     .tlsTrustCertsFilePath(serverCertificateFilePath.toString())
     .enableTlsHostnameVerification(false)
     .allowTlsInsecureConnection(false)
     .build();

制作人也很基本,看起来像这样:

pulsarClient.newProducer(Schema.STRING)
            .topic(topic)
            .create();

我已验证令牌和 TLS 证书是正确的。我也尝试过连接来自同一环境的消费者并遇到类似的异常,并且我知道具有相同代码的其他人能够从其他环境连接到同一个 Pulsar 集群。问题是什么?

标签: apache-pulsar

解决方案


您的连接被防火墙或网络问题阻止。验证您是否可以my-pulsar-server-ms-tls.domain.com:6651从您的环境建立到端点的连接。

如果您能够运行网络数据包转储(如 tcpdump),那么如果您无法建立连接,那应该很明显。

您也可以尝试运行curl my-pulsar-server-ms-tls.domain.com:6651,如果您返回一些 html,则表示您可以访问服务器。但是,如果你得到Could not resolve host,那么你被网络配置(例如丢失的路由)或防火墙阻止了。


推荐阅读