Node.js 向け Azure Service Bus: WebSockets 上の AMQP 経由の HTTP プロキシ
AMQP 接続を HTTP プロキシ経由にする必要がある場合、@azure/service-bus を ws と HttpsProxyAgent で構成します。
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 プロキシ エージェント インターフェイスは、WebSocket サービスとプロキシ アドレスを分離したままにします。
これでクライアントが構築されます。接続は送信者または受信者が操作を実行したときに発生します。そのワークロード用に保持し、シャットダウン時に client.close() を待ちます。
プロキシ トンネルの設定、WebSocket のネゴシエーション、Service Bus の操作のどこで失敗したかを特定します。プロキシはその宛先とセッションを許可する必要があります。短時間の HTTPS アクセスでは、アップグレードのサポートや許容される長時間接続の上限を証明できません。
これは接続文字列のオーバーロードです。ID 資格情報を使用すると、別途構成されたトークン取得パスを追加できます。古い azure-sb の REST スニペットは別の世代を使用しています。トランスポート オプションを選択する前にパッケージを特定してください。