Azure Service Bus エミュレーターの概要

Azure Service Bus エミュレーターは、Service Bus サービスのローカル開発エクスペリエンスを提供します。 エミュレーターを使用すると、クラウドの干渉を受けずに、分離してサービスに対してコードを開発およびテストできます。

メリット

エミュレーターを使用する主なメリットは次のとおりです。

  • ローカル開発: エミュレーターはローカル開発エクスペリエンスを提供することで、オフラインで作業し、ネットワーク待機時間を回避できるようにします。
  • コスト効率: エミュレーターを使用すると、クラウドの使用コストを発生させずにアプリケーションをテストできます。
  • 分離テスト環境: コードを単独でテストできます。これにより、テストがクラウド内の他のアクティビティの影響を受けることがなくなります。
  • 最適化された内部開発ループ: アプリケーションをクラウドにデプロイする前に、エミュレーターを使用し、アプリケーションのプロトタイプを迅速に作成してテストできます。

メモ

Service Bus エミュレーターは、 Microsoft ソフトウェア ライセンス条項で入手できます。

Service Bus エミュレーターは、コミュニティ所有の オープン ソースの Service Bus Explorer と互換性がありません。

機能

エミュレーターには、次の機能があります。

  • コンテナー化されたデプロイ: Docker コンテナー (Linux ベース) として実行されます。
  • クロスプラットフォームの互換性: Windows、macOS、Linux などの任意のプラットフォームで使用できます。
  • 構成可能性: ServiceBus 管理クライアントまたは JSON で提供される構成を使用して、Service Bus エンティティの数を管理できます。
  • ストリーミングのサポート: AMQP (Advanced Message Queuing Protocol) を使用したストリーミング メッセージをサポートします。
  • 監視: コンソールやファイルのログなどの監視機能を提供します。

既知の制限事項

エミュレーターの現在のバージョンには、次の制限があります。

  • JMS プロトコルを使用してメッセージをストリーミングすることはできません。
  • パーティション分割されたエンティティはエミュレーターと互換性がありません。
  • AMQP Web ソケットはサポートされていません。 AMQP TCP は、サポートされている唯一のトランスポートの種類です。

メモ

コンテナーの再起動後、データとエンティティはエミュレーターに保持されません。

クラウド サービスとの違い

Service Bus エミュレーターは開発とテストのみを目的としているため、エミュレーターとクラウド サービスには機能的な違いがあります。

エミュレーターでは、次の高度な機能はサポートされていません。

  • 仮想ネットワーク統合、Microsoft Entra ID 統合、アクティビティ ログ、UI ポータルなどの Azure 機能
  • 自動スケーリング機能
  • 地球災害復旧能力
  • 大きいメッセージのサポート
  • ビジュアル メトリックとアラート

メモ

エミュレーターは、開発とテストのシナリオ (特にシーケンシャル テストのユース ケース用) を対象としています。 運用環境のワークロードには Service Bus エミュレーターを使用しないでください。SLA は提供されないためです。

エミュレーターの公式サポートは提供されていません。 エミュレーターの GitHub インストーラー リポジトリで問題や提案を報告します。

使用量クォータ

Service Bus クラウド サービスと同様に、エミュレーターでは次のクォータを使用できます。

プロパティ 最大値 制限内の構成可能なユーザー
サポートされている名前空間の数 1 いいえ
名前空間内のエンティティ (キュー/トピック) の数 50 はい
トピックごとのサブスクリプション数 50 はい
トピックごとの関連付けフィルターの数 1,000 はい
トピックあたりの SQL フィルターの数 70 はい
フィルター条件またはルール アクション文字列の長さ 1,024 はい
規則アクションごとの式の数 32 はい
名前空間への同時接続数 10 はい
エンティティ (キュー/トピック) またはサブスクリプション エンティティでの同時受信要求の数 200 はい
メッセージ サイズ 256KB いいえ
キューまたはトピックのサイズ 100MB いいえ
メッセージの Time to Live 1 時間 はい

SQLフィルターの制限はトピックごとに適用され、そのトピックのすべてのサブスクリプションで共有されます。

Service Bus エミュレーター内でエンティティを作成および管理する

Service Bus 管理クライアントを使用して、キューやトピックなどの Service Bus エンティティを作成および管理できます。 既定では、エミュレーターは config.json 構成ファイルで実行されます。 必要に応じて、構成ファイルに宣言型の変更を加えることもできます。

  • エンティティ: サポートされているクォータに従って、さらに Service Bus エンティティを追加できます。
  • ログ: エミュレーターは、コンソールまたはファイル、あるいはその両方でログをサポートします。 個人の好みに応じて選択できます。

重要

エミュレーターを実行する前に、JSON 構成の変更を指定する必要があります。 変更は、その場では反映されません。 変更を適用にするには、コンテナーを再起動する必要があります。

エミュレーターの初期化時に、構成ファイルで定義されている設定は、Service Bus 管理クライアントを使用して以前に作成または変更されたすべてのエンティティをオーバーライドします。

構成ファイルのプリセット名前空間 (name) の名前を変更することはできません。

デバッグ用のログ

テスト中、コンソールやファイル ログは、予期しないエラーのデバッグに役立ちます。 ログを確認するには

  • コンソールログ: Docker デスクトップ UI で、コンテナー名を選択します。
  • ファイル ログ: コンテナーで、/home/app/EmulatorLogs に移動します。

Azure Service Bus エミュレーターを使用してローカルでテストする

Service Bus エミュレーターのサンプル