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 スニペットは別の世代を使用しています。トランスポート オプションを選択する前にパッケージを特定してください。

関連記事