使用 Azure 服务总线模拟器在本地进行测试

本文总结了使用 Azure 服务总线模拟器进行本地开发和测试的步骤。

模拟器在本地计算机上作为 Docker 容器运行,提供用于开发和测试的本地服务总线环境。 可以使用自动化脚本(用于快速设置)或手动配置 Docker 容器(以便进行更多控制)来设置模拟器。

Azure 服务总线模拟器通过 Microsoft容器注册表(MCR)提供。

注意

服务总线模拟器根据 Microsoft 软件许可条款 提供。

服务总线模拟器与社区拥有的开源服务总线资源管理器不兼容

先决条件

  • 最低硬件要求:
    • 2 GB 的 RAM
    • 5 GB 的磁盘空间
  • 需要在后台安装并运行 Docker Desktop

    注意

    即使是自动化脚本方法也使用后台的 Docker 容器来运行服务总线模拟器。

  • 适用于 Linux 的 Windows 子系统 (WSL) 配置(仅限 Windows):

运行仿真器

若要运行服务总线模拟器,可以使用自动化脚本或手动配置 Docker 容器。 这两种方法都会导致同一容器化模拟器在本地运行:

  • 自动脚本:使用预生成的脚本自动设置和运行具有默认配置的模拟器容器
  • Docker 容器:通过 Docker Compose 文件手动配置模拟器,从而提供完全控制

选择最符合需求的方法:

在运行自动化脚本之前,需要在本地克隆 Azure/azure-service-bus-emulator-installer 存储库。

Windows

使用以下步骤在 Windows 上本地运行服务总线模拟器:

  1. 打开 PowerShell 并导航到克隆了cd脚本文件夹的目录,使用命令:

    cd <path to your common scripts folder> # Update this path
    
  2. 发出 wsl 命令以在此目录中打开 WSL。

    wsl
    
  3. 运行安装脚本。/LaunchEmulator.sh。运行脚本会启动两个容器:服务总线模拟器和 SQL Server Linux(模拟器的依赖项)。

    ./Launchemulator.sh 
    

Linux 和 macOS

若要在 Linux 或 macOS 上本地运行服务总线模拟器,请执行以下操作:

  • LaunchEmulator.sh 运行安装脚本。运行脚本会启动两个容器:服务总线模拟器和 SQL Server Linux(模拟器的依赖项)。

验证模拟器是否正在运行

无论选择哪种安装方法,结果都是相同的:在本地计算机上的 Docker 容器中运行的服务总线模拟器。 模拟器由两个容器组成:

  • 服务总线模拟器容器:提供服务总线功能的主要模拟器服务
  • SQL Server Linux 容器:为模拟器提供后端存储的依赖项

可以通过检查 Docker Desktop 或使用终端中的命令 docker ps 来验证容器是否正在运行。

与模拟器交互

默认情况下,模拟器使用 config.json 配置文件。 可以通过对配置文件进行更改来配置实体。 若要了解详细信息,请访问进行配置更改

可使用以下连接字符串连接到服务总线模拟器:

  • 当模拟器容器和交互应用程序在本地计算机上进行本地运行时,请使用以下连接字符串:

    "Endpoint=sb://localhost;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
    
  • 不同计算机上的应用程序(容器化/非容器化)和同一本地网络可以使用计算机的 IPv4 地址与模拟器交互。 使用以下连接字符串:

    "Endpoint=sb://192.168.y.z;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
    
  • 同一网桥网络上的应用程序容器可以使用其别名或 IP 与模拟器交互。 以下连接字符串假定模拟器容器的名称为“servicebus-emulator”:

    "Endpoint=sb://servicebus-emulator;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
    
  • 不同网桥网络上的应用程序容器可以使用“host.docker.internal”作为主机与模拟器进行交互。 使用以下连接字符串:

    "Endpoint=sb://host.docker.internal;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
    

可以使用最新的客户端 SDK 跨各种编程语言与服务总线模拟器进行交互。 若要开始,请参阅 GitHub 上的服务总线模拟器示例

Azure 服务总线模拟器概述