getPartitionedTopicMetadata 时无法获得连接 - io.netty.channel.ConnectTimeoutException:连接超时

Posted

技术标签:

【中文标题】getPartitionedTopicMetadata 时无法获得连接 - io.netty.channel.ConnectTimeoutException:连接超时【英文标题】:Could not get connection while getPartitionedTopicMetadata - io.netty.channel.ConnectTimeoutException: connection timed out 【发布时间】:2021-11-01 08:40:10 【问题描述】:

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

2021-03-10 14:38:26.107 警告 7 --- [r-client-io-1-1] o.a.pulsar.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 警告 7 --- [al-listener-3-1] o.a.pulsar.client.impl.PulsarClientImpl :[主题: 持久性://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 集群。有什么问题?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于getPartitionedTopicMetadata 时无法获得连接 - io.netty.channel.ConnectTimeoutException:连接超时的主要内容,如果未能解决你的问题,请参考以下文章