如何从.NET SDK自动检测Azure ServiceBus的协议?
我目前已从旧版 SDK 升级到“Azure.Messaging.ServiceBus”。有一个选项“ServiceBusEnvironment.SystemConnectivity.Mode”可以根据端口的权限(5671或443)自动检测amqp或https。在此 链接。我现在想使用最新的库来模拟相同的功能。但是,在我的网络防火墙中,如果出站 5671 被拒绝,例外情况是未找到主机,但实际上主机在那里,但无法通过 5671 到达。还有其他方法可以做到这一点吗?只有当 5671 被 Windows 防火墙阻止时,我才会收到套接字异常,我可以捕获该异常并尝试使用 https 重新连接。如果 Windows 防火墙允许但底层网络阻止它,则情况不同。有什么想法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Azure.Messaging.ServiceBus
中的客户端仅使用 AMQP 协议进行通信。默认情况下,为了提高效率,直接使用 TCP 套接字建立连接。除非您已明确设置 TransportTypeServiceBusClient
,这就是您正在使用的。上述
TransportType
允许您通过 Web 套接字请求 AMQP,这通常用于帮助解决您所描述的防火墙问题。如果您的环境需要,ServiceBusClientOptions
还允许您设置 Web 代理来路由流量。The clients in
Azure.Messaging.ServiceBus
communicate only using the AMQP protocol. By default, connections are made using TCP sockets directly for efficiency. Unless you have explicitly set the TransportType in theServiceBusClientOptions
when creating yourServiceBusClient
, that's what you're using.The aforementioned
TransportType
allows you to request AMQP over web sockets, which is typically used to help work around firewall issues such as you're describing. TheServiceBusClientOptions
also allows you to set a web proxy to route traffic through, should your environment require that.