Node.js 的 Azure Service Bus:经 WebSocket 上的 AMQP 使用 HTTP 代理
当 AMQP 连接必须经过 HTTP 代理时,用 ws 与 HttpsProxyAgent 配置 @azure/service-bus。
对于位于 HTTP 代理之后的 Node Service Bus v7 消息客户端,请使用 SDK 示例中的 AMQP over WebSockets 方案:
const { ServiceBusClient } = require("@azure/service-bus");
const WebSocket = require("ws");
const { HttpsProxyAgent } = require("https-proxy-agent");
const proxyAgent = new HttpsProxyAgent(proxyUrl);
const client = new ServiceBusClient(connectionString, {
webSocketOptions: {
webSocket: WebSocket,
webSocketConstructorOptions: { agent: proxyAgent },
},
});
提供代理 URL 和 Service Bus 连接字符串。若要在无代理认证的情况下测试允许的公共 Service Bus 命名空间,HTTP 代理列表中的 HTTP 条目可以提供 proxyUrl。ws 与 https-proxy-agent 包必须已是应用依赖。底层 ws 代理 agent 接口让 WebSocket 服务与代理地址保持分离。
这会构造客户端;连接在发送方或接收方执行操作时发生。为该工作负载保留它,并在关闭时等待 client.close()。
从代理隧道建立、WebSocket 协商和 Service Bus 操作中定位故障。代理必须允许该目标与会话。短暂的 HTTPS 访问不能证明支持升级,也不能证明存在可接受的长期连接限制。
这是使用连接字符串的重载。身份凭据可以增加单独配置的令牌获取路径。旧的 azure-sb REST 片段属于另一代;选择其传输选项前先确认包。