我正在尝试通过Node-red连接到Azure Event Hub以获取要转发的数据,但是我怀疑由于访问问题而导致失败。
我用来提取数据的节点如下: https://flows.nodered.org/node/node-red-contrib-azure-eventhub-receive
如您在上图中所看到的,它返回错误而未指定哪个。棘手的事情是我在企业网络中使用它,我想有一些封闭的端口会阻止访问,但是我找不到哪个。由于我已经从选板下载了一些节点,因此Node-red确实可以访问Internet,因此将问题范围缩小到可访问性。
我在家庭网络中使用了相同的设置,没有问题,因此放弃了Azure,事件中心或连接字符串的任何问题。
是否有人知道它正在通过哪个端口或可能阻止了它?
答案 0 :(得分:0)
Azure事件中心使用AMQP协议传输消息。高级消息队列协议1.0是标准化的成帧和传输协议,用于在双方之间异步,安全且可靠地传输消息。它是Azure Service Bus消息传递和Azure事件中心的主要协议。两种服务还支持HTTPS。支持AMQP的专有SBMP协议也正在逐步淘汰。
这是一个简短的摘要和一些参考,应阐明出站端口的主题:
首先,这取决于您使用的是旧客户端还是新客户端,或者是否使用其余的API。实际上,AMQP协议指南在以下文章的“连接和会话”部分下具有良好的指导:
https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide
以上文章的重点:
•Azure Service Bus始终需要使用TLS。
•它支持通过TCP端口5671和TCP端口5672的连接。服务器使用AMQP规定的模型立即提供对TLS的强制升级。 AMQP WebSockets绑定在TCP端口443上创建了一个隧道,该隧道随后等效于AMQP 5671连接。
•现代(.Net标准和Java)客户端均使用AMQP,因此上述指导原则适用。
•较早的.NET库具有基于WCF的自定义协议,该协议使用TCP和端口9354(称为SBMP,服务总线消息传递协议)。
•如果仅使用我们的rest API,则可能只能打开端口443。
IP地址白名单
要为您的连接找到正确的IP地址到白名单,您可以例如执行以下操作。从连接字符串复制名称空间URL,或者通常,您可以只使用YourNamespaceName.servicebus.windows.net,然后打开命令提示符并执行:nslookup YourNamespaceName.servicebus.windows.net。您正在寻找“非权威性答案”中返回的IP地址。
请注意:此IP地址是静态的。它会改变的唯一时间点是可以将名称空间恢复到另一个群集上,而这通常不会发生严重事件。
希望有帮助。