NestJS后端调用Azure Notification Hubs遇ENOTFOUND错误求助
针对你遇到的端点未找到错误,结合描述的情况,给出以下排查和解决方向:
核对命名空间名称一致性
你测试DNS用的是https://myhub.servicebus.windows.net,但连接字符串里的Endpoint是sb://myhubname.servicebus.windows.net/,两者的命名空间名称(myhubvsmyhubname)不匹配,这大概率是核心问题。Azure的命名空间DNS解析严格对应创建时的名称,必须确保连接字符串里的Endpoint域名和实际命名空间完全一致。修正DNS查询方式
执行DNS查询时不要带https://前缀,直接查询域名your-namespace-name.servicebus.windows.net,带URL前缀会导致解析报错,无法得到正确结果。确认NotificationHubsClient初始化参数
第二个参数是通知中心名称,不是命名空间名称。要确保这个名称是你在目标命名空间下创建的具体通知中心的名称,不要和命名空间混淆。验证连接字符串有效性
登录Azure门户,进入通知中心的“访问策略”页面,重新生成DefaultFullSharedAccessSignature的连接字符串,复制时注意不要包含多余空格或换行,确保.env中的连接字符串和门户生成的完全一致。排查网络限制
检查NestJS服务所在环境的防火墙、代理规则,确认是否允许访问Azure Service Bus的端点。可以在同一网络下用curl测试连通性:curl -v https://your-namespace.servicebus.windows.net/your-hub-name/messages
修正后的初始化代码示例(假设命名空间为mynamespace,通知中心为myhub):
this.client = new NotificationHubsClient( 'Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=DefaultFullSharedAccessSignature;SharedAccessKey=your-actual-key', 'myhub', );
内容的提问来源于stack exchange,提问作者ehrgein

