node.js - 节点红色阻止 Azure 事件中心访问
问题描述
我正在尝试通过 Node-red 连接到 Azure 事件中心以获取我正在转发的数据,但我怀疑它由于访问问题而失败。
我用来提取数据的节点如下: https ://flows.nodered.org/node/node-red-contrib-azure-eventhub-receive
正如您在上图中看到的那样,它返回一个错误而没有指定哪个。这里棘手的是我在企业网络中使用它,我猜有一些封闭的端口阻止了访问,但我找不到哪个。Node-red 确实可以访问 Internet,因为我已经从调色板下载了一些节点,因此可以将问题缩小到可访问性。
我在我的家庭网络中使用了相同的设置,没有任何问题,因此放弃了 Azure、事件中心或连接字符串的任何问题。
有没有人知道它正在通过哪个端口或可能是什么阻止了它?
解决方案
Azure 事件中心使用 AMQP 协议传输消息。高级消息队列协议 1.0 是一种标准化的框架和传输协议,用于在两方之间异步、安全和可靠地传输消息。它是 Azure 服务总线消息传递和 Azure 事件中心的主要协议。这两项服务还支持 HTTPS。也支持的专有 SBMP 协议正在逐步淘汰,以支持 AMQP。
这是一个简短的摘要和一些参考资料,它们应该阐明出站端口的主题:
首先,这取决于您是使用旧客户端还是新客户端,还是使用其他 API。AMQP 协议指南实际上在下面的“连接和会话”部分下有很好的指导:
https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide
上述文章的要点:
• Azure 服务总线需要始终使用 TLS。
• 它支持通过 TCP 端口 5671 和 TCP 端口 5672 的连接。服务器立即使用 AMQP 规定的模型提供强制升级到 TLS。AMQP WebSockets 绑定在 TCP 端口 443 上创建一个隧道,然后等效于 AMQP 5671 连接。
• 现代(.Net Standard 和 Java)客户端都使用 AMQP,因此上述指南适用。
• 旧的 .NET 库有一个自定义的、基于 WCF 的协议,该协议使用 TCP 和端口 9354(称为 SBMP,服务总线消息传递协议)。
• 如果您只使用我们的 REST API,您可能只能打开端口 443。
IP地址白名单
要为您的连接找到正确的 IP 地址以将其列入白名单,例如,您可以执行以下操作。从连接字符串中复制命名空间 URL,或者通常只使用 YourNamespaceName.servicebus.windows.net,然后打开命令提示符并执行:nslookup YourNamespaceName.servicebus.windows.net。“非权威答案”中返回的 IP 地址就是您要查找的。
请注意:此 IP 地址是静态的。它会改变的唯一时间点是,如果我们将命名空间恢复到不同的集群上,这不是我们通常不会在没有发生一些严重事件的情况下做的任何事情。
希望能帮助到你。
推荐阅读
- elasticsearch - 如何为谷歌数据流实例分配 IP 范围?
- ruby-on-rails - ruby 中的私有类方法链接
- php - 用于插入帖子的 WP All Import 插件配置?
- android - 初始化期间的 Firebase Crashlytics 错误
- r - Excel中的数字列被转换为逻辑
- javascript - 仅使用 javascript 解析 json 文件在 IE11 中不起作用
- scala - 对于每个键,仅获取多个值
- c# - C# winForm:Excel 上传不适用于“Provider=Microsoft.ACE.OLEDB.12.0”
- java - 使用jrxml的动态报表
- android - Firebase:如何为同一个键查询检索两个值?